![](/img/trans.png)
[英]Get difference in months and list the months in an array between two dates in javascript
[英]How to get difference between two dates in javascript when they are of different months
我想了解两个日期在不同月份或年份时的区别。 我用下面的代码
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));
当我使用2014年10月17日和2014年10月19日这样的日期时,它给了我两个完美的区别。 但是,当我使用2014年10月31日和2014年11月11日这样的日期时,它给我的结果为零,而实际结果应该是1。也就是说,当月份或年份不同时,它会显示异常结果。 请给我建议一些想法或一些功能,我可以用它们来获得适当的结果。
在JavaScript中,月份从0开始索引。因此,一月份的索引为0,十二月的索引为11。在您指定2014年10月31日的情况下,您实际上必须将9作为month参数传递给日期构造函数。 与日期构造器类似,而不是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]);
这是一个可以做到的功能。 我测试了不同的年份以及不同的月份。 由于时间信息对您而言无关紧要,因此请为两个日期提供相同的值,例如您在评论中指出的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");
这是获得的结果的两个图像捕获。 首先是不同的年份,其次是不同的月份。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.