我有一些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进行日期减法的更好方法不会导致这个问题?