日期减法返回意外结果

时间:2014-08-14 20:29:06

标签: javascript date

我有一些JavaScript可以从我的网页上的两个字段中提取日期:

var StartDate = document.getElementById('StartDate');
var EndDate = document.getElementById('EndDate');

当我得到这两个日期时,我有以下执行日期减法的代码片段:

var day = 1000*60*60*24;
var d1 = new Date(StartDate.value);
var d2 = new Date(EndDate.value);
var difference = (Math.ceil((d2.getTime() - d1.getTime()) / day))

现在是问题进来的时候。说我的两个日期是这样的:

StartDate = 2013-05-01
EndDate = 2013-06-30

使用计算器得到:

1372564800000 - 1367380800000 = 5184000000
5184000000 / 86400000 = 60 days

然而,接下来让我们使用以下日期:

StartDate = 2013-10-01
EndDate = 2013-11-30

再次,使用我们得到的计算器:

1385787600000 - 1380600000000 = 5187600000
5187600000 / 86400000 = 60.04166666666667 days

我只是不确定这是怎么回事,我使用两个相同的日期范围。两个开始日都是从一个月的第一天开始,持续31天,两个结束日都在一个月的最后一天结束,持续30天。当我将这些日期范围放入MS Excel工作簿时,我得到了正确的天数:

=(EndCell-StartCell)

我再次获得两组日期范围的60天。

这似乎只发生在我进入2013年11月的时候。当我进入2014年11月时,这种情况不会发生,而且在发生这种情况时我找不到任何其他时间。我知道2013年已经不见了,但我的申请将大量处理2013年的日期。有没有人知道为什么/如何发生这种情况的原因?有没有人知道用JavaScript进行日期减法的更好方法不会导致这个问题?

0 个答案:

没有答案