精华内容
下载资源
问答
  • /** 从键盘输入一个日期,格式为yyyy-M-d要求计算日期与1949年10月1日距离多少天例如:用户输入了:1949-10-2程序输出:1用户输入了:1949-11-1程序输出:31*/import java.util.Arrays;import java.util.Scanner;...

    /*

    * 从键盘输入一个日期,格式为yyyy-M-d

    要求计算该日期与1949年10月1日距离多少天

    例如:

    用户输入了:1949-10-2

    程序输出:1

    用户输入了:1949-11-1

    程序输出:31

    */

    import java.util.Arrays;

    import java.util.Scanner;

    public class Demo09 {

    static int[][] days = { // 定义平年days[0]和闰年days[1]

    {0,31,28,31,30,31,30,31,31,30,31,30,31},

    {0,31,29,31,30,31,30,31,31,30,31,30,31}};

    // 字符串转换 整数

    public static int[] conversion(String s) {

    String[] ss = s.split("\\-");

    int[] t = new int[3];

    t[0] = Integer.parseInt(ss[0]);

    t[1] = Integer.parseInt(ss[1]);

    t[2] = Integer.parseInt(ss[2]);

    return t;

    }

    // 计算任意一年内的总天数 (是365还是366)

    public static int calcDay(int y,int m,int d){

    int sum = d; // 每一年的总天数 (初始化为最后一个月的天数)

    int i = 0; // 平年下标为 0

    if((y%4==0&&y%100!=0)||(y%400==0)) i = 1; // 闰年下标为 1

    for(int j=0;j

    sum += days[i][j];

    }

    return sum;

    }

    // 判断是否交换输入的两个日期 (日期小者放前)

    public static void isSwap(int[] o,int[] n){

    if(o[0]>n[0]){ // 日期内容交换

    for(int i=0;i

    int t = o[i];

    o[i] = n[i];

    n[i] = t;

    }

    }

    }

    // 输出

    public static String p(int[] s){

    StringBuffer sb = new StringBuffer();

    for(int i=0;i

    sb.append(s[i]+"-");

    }

    sb.append(s[s.length-1]);

    return sb.toString();

    }

    // 计算总天数

    public static int calc(int[] o, int[] n) {

    int sum;

    if(n[0]==o[0]){ // 如果年份相等,侧直接计算天数

    sum = calcDay(n[0],n[1],n[2])-calcDay(o[0],o[1],o[2]); // 大的日期天数-小的日期天数

    }else{

    sum = calcDay(o[0],12,31)-calcDay(o[0],o[1],o[2]); // 得到第一年日期到下一年开始的天数

    for(int i=o[0]+1;i

    sum += calcDay(i,12,31);

    }

    sum += calcDay(n[0],n[1],n[2]); // 加上最后一年的天数

    }

    return sum;

    }

    public static void main(String[] args){

    // int[] o = conversion("1949-10-2");

    Scanner scan = new Scanner(System.in);

    System.out.print("输入日期格式为:(1949-10-2)\n输入第一个日期:");

    int[] o = conversion(scan.nextLine());

    System.out.print("输入第二个日期:");

    int[] n = conversion(scan.nextLine());

    int sum = 0; // 总和

    isSwap(o,n); // 如果o日期小于n日期,侧交换

    sum = calc(o, n); // 计算总天数

    System.out.println(p(o)+" 到 "+p(n)+"\n距离"+sum+"天");

    }

    }

    版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com

    特别注意:本站所有转载文章言论不代表本站观点!

    本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

    展开全文
  • 近期,由于业务需要计算两个日期之前相差多少个月。我在网上找了很久,结果发现万能的python,居然没有一个模块计算两个日期的月数,像Java、C#之类的高级语言,都会有(date1-date2).months的现成方法,觉得不可思议...

    近期,由于业务需要计算两个日期之前相差多少个月。我在网上找了很久,结果发现万能的python,居然没有一个模块计算两个日期的月数,像Java、C#之类的高级语言,都会有(date1-date2).months的现成方法,觉得不可思议。说句实在的,一直觉得python 的日期处理模块真心不好用。

    哦,对了,别跟我说 datetime, calendar, dateutil 这些模块,因为我都试过了,都没用。有个竟然算出来还有错。datetime.timedelta只能计算出日时分秒。对年月却不支持。网上一搜,一大堆的。

    dateutil.rrule这个例子是我好不容易找到的,请看我的测试结果:

    import datetime

    from dateutil import rrule

    d1 = datetime.date(2016, 2, 29)

    d2 = datetime.date(2019, 3, 31)

    months = rrule.rrule(rrule.MONTHLY, dtstart=d1, until=d2).count()

    print(f"months={months}")

    03c0be1997d34c083e72f5b7b5bf13a6.png

    看到这样的结果,我只能呵呵了。

    废话不多少,献上自己写的代码:

    该代码返回,(月,小数月)

    import datetime

    import calendar as c

    d1 = datetime.date(2016, 2, 29)

    d2 = datetime.date(2019, 3, 31)

    def calmonths(startdate, enddate):

    # 计算两个日期相隔月差

    samemonthdate = None

    try:

    samemonthdate = datetime.date(enddate.year, enddate.month,

    startdate.day)

    except Exception as e:

    print(e)

    samemonthdate = datetime.date(enddate.year, enddate.month,

    c.monthrange(enddate.year,

    enddate.month)[1])

    holdmonths = 0

    decimalmonth = 0.0

    if samemonthdate > enddate:

    premanthdate = None

    try:

    premanthdate = datetime.date(enddate.year, enddate.month - 1,

    startdate.day)

    except Exception as e:

    print(e)

    premanthdate = datetime.date(enddate.year, enddate.month - 1,

    c.monthrange(

    enddate.year,

    enddate.month - 1)[1])

    currmonthdays = (samemonthdate - premanthdate).days

    holdmonths = (premanthdate.year - startdate.year

    ) * 12 + premanthdate.month - startdate.month

    decimalmonth = (enddate - premanthdate).days / currmonthdays

    elif samemonthdate < enddate:

    nextmonthdate = None

    try:

    nextmonthdate = datetime.date(enddate.year, enddate.month + 1,

    startdate.day)

    except Exception as e:

    nextmonthdate = datetime.date(enddate.year, enddate.month + 1,

    c.monthrange(

    enddate.year,

    enddate.month + 1)[1])

    currmonthdays = (nextmonthdate - samemonthdate).days

    holdmonths = (samemonthdate.year - startdate.year

    ) * 12 + samemonthdate.month - startdate.month

    decimalmonth = (enddate - samemonthdate).days / currmonthdays

    else:

    holdmonths = (enddate.year - startdate.year

    ) * 12 + enddate.month - startdate.month

    return holdmonths, decimalmonth

    months = calmonths(d1, d2)

    print(f"months={months}")

    d2e04515fe04773ac532ca5bd3a0ab7d.png

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持找一找教程网。

    展开全文
  • 有时可能会碰到这种需求,需要.../***函数功能:计算两个以YYYY-MM-DD为格式的日期相差多少天(日)*return int*/function getChaBetweenTwoDate($date1,$date2){$Date_List_a1=explode("-",$date1);$Date_List_a2...

    有时可能会碰到这种需求,需要计算两个日期相隔多少天?下面这个函数很好的解决了这个问题,记录一下,以免下一次忘了。

    /*

    *

    *函数功能:计算两个以YYYY-MM-DD为格式的日期,相差多少天(日)

    *return int

    */

    function getChaBetweenTwoDate($date1,$date2){

    $Date_List_a1=explode("-",$date1);

    $Date_List_a2=explode("-",$date2);

    $d1=mktime(0,0,0,$Date_List_a1[1],$Date_List_a1[2],$Date_List_a1[0]);

    $d2=mktime(0,0,0,$Date_List_a2[1],$Date_List_a2[2],$Date_List_a2[0]);

    $Days=round(($d1-$d2)/3600/24);

    return $Days;

    }

    使用方法如下:

    echo getChaBetweenTwoDate('2012-11-20','1949-10-16');

    以上代码执行结果将显示为:

    23046

    意思即这两个日期相差 23046 天。

    展开全文
  • functiondateDiff(d1,d2){//计算两个日期之间相差多少多少多少天d1=newDate(d1.replace(/-/g,'/'));//开始时间d2=newDate(d2.replace(/-/g,'/'));//结束时间varobj={},M1=d1.getMonth()+1,D1=d1.getDate(),M2=d2...

    function

    dateDiff(d1,d2){//

    计算两个日期之间相差多少年多少月多少天

    d1 = new Date(d1.replace(/-/g,'/'));//

    开始时间

    d2 = new Date(d2.replace(/-/g,'/'));//

    结束时间

    var obj={},M1=d1.getMonth()+1,D1=d1.getDate(),M2=d2.getMonth()+1,D2=d2.getDate();

    obj.Y=d2.getFullYear() - d1.getFullYear() + (M1*100+D1 > M2*100+D2 ? -1 : 0);//

    相差年份计

    obj.M=(d2.getFullYear() - d1.getFullYear()) * 12 + M2 - M1 + (D1 > D2 ? -1 : 0);

    if(D2>D1){//

    结束时间的日期大于开始时间的日期,

    则相差天数为结束日期天数减开始日

    期天数加

    1

    obj.D=D2-D1+1;

    if(M2==1||M2==3||M2==5||M2==7||M2==8||M2==10||M2==12){

    setDay(obj,"31");

    }else if(M2==4||M2==6||M2==9||M2==11){

    setDay(obj,"30");

    }else if(M2==2){

    if(d2.getFullYear()%4==0){

    setDay(obj,"29");

    }else{

    setDay(obj,"28");

    }

    }

    }else if(D2==D1){//

    结束时间的日期等于开始时间的日期,则相差天数为

    1

    obj.D=1;

    }else{//

    结束时间的日期小于于开始时间的日期,

    则相差天数为开始时间所在月的天数减

    去开始时间日期加上结束时间的日期

    if(M1==1||M1==3||M1==5||M1==7||M1==8||M1==10||M1==12){

    obj.D=31-D1+D2+1;

    setDay(obj,"31");

    }else if(M1==4||M1==6||M1==9||M1==11){

    obj.D=30-D1+D2+1;

    setDay(obj,"30");

    }else if(M1==2){

    if(d1.getFullYear()%4==0){

    obj.D=29-D1+D2+1;

    setDay(obj,"29");

    }else{

    obj.D=28-D1+D2+1;

    setDay(obj,"28");

    }

    };

    };

    obj.M=obj.M>=12?obj.M%12:obj.M;

    var text="";

    if(obj.D>0){

    展开全文
  • 近期,由于业务需要计算两个日期之前相差多少个月。我在网上找了很久,结果发现万能的python,居然没有一个模块计算两个日期的月数,像Java、C#之类的高级语言,都会有(date1-date2).months的现成方法,觉得不可思议...
  • Java计算两个日期相差多少天,java计算日期,/* * 从键盘输入一/* * 从键盘输入一个日期,格式为yyyy-M-d 要求计算该日期与1949年10月1日距离多少天 例如: 用户输入了:1949-10-2 程序输出:1 用户输入了:1949-11-1...
  • //从对象中拿到时间 long d1 = df.parse(df.format(date1)).getTime(); long d2 = df.parse(df.format(date2)).getTime(); long diff=(d2-d1)/1000/60; System.out.println(diff); } catch (ParseException e) { e....
  • 展开全部思路是先计算两个62616964757a686964616fe59b9ee7ad9431333365666264日期相差的毫秒数,然后分别根据每天的毫秒数、每小时的毫秒数、每分钟的毫秒数来计算相差几天,几小时,几分钟。具体代码如下:public ...
  • JDK7及以前的版本,计算两个日期相差的年月日比较麻烦。JDK8新出的日期类,提供了比较简单的实现方法。/*** 计算2个日期之间相差的 相差多少年月日* 比如:2011-02-02 到 2017-03-02 相差 6年,1个月,0天*@...
  • java计算两个时间相差多少小时

    千次阅读 2021-08-23 15:36:36
    最近有个需求,根据两个时间,计算两个时间之间相差多少个小时。 查了一下,网上有现成的工具类,而且翻来覆去都是这个工具类的复制粘贴版 摘出自己需要的。得到下面这个 private int getDifferHour(Date ...
  • Java8 计算两个日期之间相差多少

    千次阅读 2021-02-28 17:46:07
    在使用Java8 新特性中关于Period.between的方法时需注意该方法获取日期的区间问题。html@Testpublic void test1(){LocalDate from = LocalDate.of(2018,10,1);System.out.println(Period.between(from,LocalDate.now...
  • 1: import java.util.Date; 2: 3: public class ShowTimeInterval{ 4: public void ... 12: System.out.println("date1 与 date2 相差 " + day + "天" + hour + "小时" + min + "" + sec + "秒"); 13: } 14: }
  • LocalDate的使用计算两个日期之间间隔多少天使用Period来获取间隔LocalDate localDate1 = LocalDate.of(2017, 10, 24);LocalDate localDate2 = LocalDate.of(2017, 10, 27);Period next = Period.between(localDate1...
  • 但是发现手动统计中 获取两个时间之间相差的小时数的计算有点儿问题。 今天就修改了一下,记录一下,下次用的时候直接取 String st = request.getParameter("st"); //开始时间 String ed = request.getParameter...
  • JAVA计算两个日期相差的实例

    千次阅读 2021-03-09 19:32:36
    在Java开发物流或是其他功能的时候会用到两个日期 相差多天的数据,所以整理了一下备用。调用方式:long date1 = getDateTime("20121201");//可改成自己的日期类型,但以 “20121212”这种格式long date2 = ...
  • import java.util.Scanner;public class HelloWorld {public static void main(String[] args){//Scanner s = new Scanner...//System.out.println("请输入一数字");//int num = s.nextInt();int SUM = Caluater...
  • java计算两个日期相差年数

    千次阅读 2021-02-13 00:49:06
    该方法默认结束时间比开始时间大,也就是开始时间在结束时间之前~~~//计算两个日期相差年数public static int yearDateDiff(String startDate,String endDate){Calendar calBegin = Calendar.getInstance();...
  • 计算不是通过时间戳24小时为一天,单纯是计算两个日期之前相差的天数,例如,2021年11月25日和2021年12月1日相差多少天: /** * date2比date1多的天数 * @param date1 * @param date2 * @return */ ...
  • java中计算两个日期相差几天来源:华强电子网作者:华仔浏览:578时间:2016-08-10 14:18标签:摘要:1.public class Test { 2.public void dateDiff(String startTime, String endTime, String format) { 3.//按照...
  • 今天碰到一个问题,就是计算两个日期相差几个月。现在把代码分享给大家,代码如下:functiongetMonthNum($date1,$date2){$date1_stamp=strtotime($date1);$date2_stamp=strtotime($date2);list($date_1['y'],$date_1...
  • VBA中时间的处理,涉及文本,数字,时间格式,这篇文章用计算两个时间的差值,把这三者使用的函数进行了简述。
  • 编程之家小编现在分享给大家,也给大家做参考。function checkTime(obj){var startTime= $(obj).parent().siblings().next().next().children().val();//到项目时间var endTime= $(obj).parent().siblings().nex.....
  • java 计算两个时间相差多少

    千次阅读 2021-02-26 19:56:12
    private int daysBetween(Date smdate, Date bdate) throws ParseException{final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");smdate = sdf.parse(sdf.format(smdate));bdate = sdf.parse(sdf.form...
  • 按照我的理解,2018-04-01 和 2018-08-02 应该是相差 4 月零 1 天。然后这是按照我的理解写出来的代码(基于 Java8):import java.time.LocalDate;import java.time.format.DateTimeFormatter;public class ...
  • View Code 第二种 两个日期相减得出一个数字类型 1天2小时510秒=1.0869212962963 select to_date('2020-01-06 14:35:35','yyyy-mm-dd hh24:mi:ss')- to_date('2020-01-05 12:30:25','yyyy-mm-dd hh24:mi:ss') ...
  • java可以使用计算日期的天数差,以下是详细代码:import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;public class test16 {/*** @param args* @...
  • //除以1000是为了转换成秒 double sec = Double.valueOf(end_time.getTime() - start_time.getTime())/1000;
  • import java.util.Scanner; public class Homework1 { static public int date(int year1,int month1,int day1,int year2,int month2,int day2){ int sum=0; if(year2<year1){ int i=year2;...
  • 第一种方法,使用PHP类库实现/*** function:计算两个日期相隔多少年,多少月,多少天* param string $date1[格式如:2011-11-5]* param string $date2[格式如:2012-12-01]* return array array('年','月','日');...
  • //依赖 hutool 工具包 public static Long getRemainingTime(Date time) { long remainingTime = 0; //过期时间偏移一天 DateTime expirationTime... //过期时间小于当前时间 未过期 if (expirationTime.after(n..

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 84,855
精华内容 33,942
关键字:

计算两个时间相差多少分