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

时间:2015-03-28 06:21:20

标签: javascript date datetime

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

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 个答案:

答案 0 :(得分:2)

在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]);

答案 1 :(得分:0)

这是一个可以做到这一点的功能。我测试了不同年份和不同月份。由于时间信息与您无关,因此请将其与两个日期的相同值相提并论,例如您在评论中所述的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