首页 文章

如何在不同月份的javascript中获取两个日期之间的差异

提问于
浏览
1

我希望在不同月份或年份的两个日期之间得到差异 . 我使用下面的代码

var d1 = lastexecdate.split(“ . ”);

var d2 = jabusinessdate.split(“ . ”);

var date1 = new Date(d1 [2],d1 [1],d1 [0]);

var date2 = new Date(d2 [2],d2 [1],d2 [0]);

var timeDiff =(date2.getTime() - date1.getTime());

var diffdays = Math.ceil(timeDiff /(1000 * 3600 * 24));

当我使用诸如17.10.2014和19.10.2014之类的日期时,它给了我两个不同的完美 . 但是当我使用诸如2014年10月31日和2014年1月1日之类的日期时,它给出了一个结果为0,其中实际结果应为1.即,当月份或年份不同时,结果显示异常 . 请告诉我一些想法或一些功能,我可以使用它来获得适当的结果 .

2 回答

  • 2

    这是一个可以做到这一点的功能 . 我测试了不同年份和不同月份 . 由于时间信息与您无关,因此请在两个日期为其提供相同的值,例如您在评论中说明的00:00:00

    function dateDiff(date1, date2){
        var diff = {}                           // return initialisation
        var tmp = date2 - date1;
    
        tmp = Math.floor(tmp/1000);             // Number of seconds between the     two dates
        diff.sec = tmp % 60;                    // Extracting the number of    seconds
    
        tmp = Math.floor((tmp-diff.sec)/60);    // Number of minutes (integer    part)
        diff.min = tmp % 60;                    // Extracting the number of     minutes
    
        tmp = Math.floor((tmp-diff.min)/60);    // Number of hours (integer     part)
        diff.hour = tmp % 24;                   // Extracting the number of     hours
    
        tmp = Math.floor((tmp-diff.hour)/24);   // Number of remaining days
        diff.day = tmp;
    
        return diff;
    }
    
        date1 = new Date('2013-08-25 00:00:00');
        date2 = new Date('2013-10-29 22:16:57');
        diff = dateDiff(date1, date2);
        alert("Between "+date1.toString()+" and "+date2.toString()+" there are         "+diff.day+" days, "+diff.hour+" hours, "+diff.min+" minutes and "+diff.sec+"       seconds");
    

    这是获得结果的两个图像捕获 . 首先是不同年份,第二年是不同月份 .

    years different

    months different

  • 0

    在JavaScript中,月份的索引为0.因此,1月份的索引为0,12月份的索引为11.在您指定日期31.10.2014的情况下,您必须将9作为月份参数传递给日期构造函数 . 类似于10而不是11到日期构造函数 .

    例:

    对于“31.10.2014”:

    var date1 = new Date(2014,9,31);
    

    对于“1.11.2014”:

    var date2 = new Date(2014,10,1);
    

    现在进行如下计算:

    var timeDiff =Math.abs(date2.getTime() - date1.getTime());
    var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24));
    

    这将给出结果1 .

    所以你要做的就是从代码中的月份中减去1,如下所示:

    var date1= new Date(d1[2], d1[1] - 1,d1[0]);
    
    var date2= new Date(d2[2], d2[1] - 1,d2[0]);
    

相关问题