两天之间的Javascript天计算

时间:2013-06-18 16:25:52

标签: javascript days

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

答案 0 :(得分:4)

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

您与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);

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

答案 1 :(得分:0)

在javascript月份从05年1月1日开始,从00年1月开始

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