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 天的时间。你能帮助我吗?

4

2 回答 2

4

那是因为月份0在 JavaScript 中被编入索引。所以你的第一次约会是在七月,第二次约会是八月。

您正在与一个有 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);

是的,我已经“修复”了我的代码......

于 2013-06-18T16:27:43.260 回答
0

在 javascript 中,月份从 00-Jan 开始,自 05-6 月开始

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);
于 2013-06-18T16:38:02.313 回答