两个日期之间的Javascript天数计算

4
var oneDay = 24 * 60 * 60 * 1000; // hours*minutes*seconds*milliseconds
var firstDate = new Date(2013, 06, 30);
var secondDate = new Date(2013, 07, 01);
var diffDays = Math.round(Math.abs((secondDate.getTime() - firstDate.getTime()) / (oneDay)));

我运行上述代码,应该得到的答案是1天。但是它给了我2天。 你能帮我吗?

2个回答

4

这是因为在JavaScript中,月份是从0开始计数的。所以你的第一个日期是7月,第二个日期是8月。

你正在比较一个有31天的月份,因此差异正确为2天。

当我用JavaScript输入日期时,我会明确添加偏移量,以避免其他程序员误读。犯这种错误太容易了:

var firstDate = new Date(2013, 06 - 1, 30); // -1 due to the months being 0-indexed in JavaScript
var secondDate = new Date(2013, 07 - 1, 01);

Yes I had had my code "fixed"...


是的,这个有点棘手:https://dev59.com/4HM_5IYBdhLWcg3wQQzw - jdero

0
在 JavaScript 中,月份从00-Jan开始,自05-June以来。
var oneDay = 24 * 60 * 60 * 1000; // hours*minutes*seconds*milliseconds
var firstDate = new Date(2013, 05, 30);
var secondDate = new Date(2013, 06, 01);
var diffDays = (secondDate- firstDate)/oneDay;
alert(diffDays);

为避免混淆,您可以使用以下方式:
var oneDay = 24 * 60 * 60 * 1000; // hours*minutes*seconds*milliseconds
var firstDate = new Date('JUNE 30,2013');
var secondDate = new Date('JULY 01,2013');
var diffDays = (secondDate- firstDate)/oneDay;
alert(diffDays);

@Muhammad Suleman如果您发现答案是正确的,请接受它。 - Thirumalai murugan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接