我必须计算两个日期之间经过了多少年。我的代码工作正常 - 除了非常具体的日期。
dateEnd
下面的代码应该为和产生相同的年份差异dateEnd1
,但是它们并不相等。如果我将年份从 2003 年更改为 2004 年,它将变得相等。如果我离开这一年,但从三月改为二月,它又会是平等的。
我想这与闰年有关,但我不知道为什么?特别是因为那段时间有 4 个闰年,但是仅相隔一天的日期会发生年份错误计算。
在这两种情况下,我预计年差为 12,但是在第一种情况下,我得到 13 的dateEnd
变量
var dateStart = '2003,03,11';
var dateEnd = '2016,03,10';
var dateEnd1 = '2016,03,09';
var difference = (new Date(dateEnd)).getTime() - (new Date(dateStart)).getTime();
difference = (new Date(difference)).getFullYear() - 1970;
alert('Between ' + dateStart + ' and ' + dateEnd + ' elapsed ' + difference + ' years.');
difference = (new Date(dateEnd1)).getTime() - (new Date(dateStart)).getTime();
difference = (new Date(difference)).getFullYear() - 1970;
alert('Between ' + dateStart + ' and ' + dateEnd1 + ' elapsed ' + difference + ' years.');
这是jsfiddle上的代码。评论中的一个人设法在他的jsfiddle上重现了这个问题!
这是我得到的变量值
dateStart time: 1047337200000
dateEnd time: 1457564400000
dateEnd1 time: 1457478000000
Time difference for the first case: 410227200000
Between 2003,03,11 and 2016,03,10 elapsed 13 years.
Time difference for the second case: 410140800000
Between 2003,03,11 and 2016,03,09 elapsed 12 years.