我希望在不同月份或年份的两个日期之间得到差异。我使用了以下代码
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.即,当月份或年份不同时,结果显示异常。请告诉我一些想法或一些功能,我可以用来获得适当的结果。
答案 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");
这是获得结果的两个图像捕获。首先是不同年份,第二年是不同月份。