我需要计算两个日期之间相差的年数。我的代码运行正常,但对于某些特定的日期会出现问题。
下面的代码应该会给出
我猜这可能与闰年有关,但我不知道原因。尤其是在那段时间内有4个闰年,但年份计算错误发生在相隔一天的日期上。
我期望在这两种情况下得到的年份差都是12,但是对于变量
这里是在 jsfiddle 上的代码。评论区一位人成功地在他的 jsfiddle 上重现了问题!
这里是我获得的变量值:
下面的代码应该会给出
dateEnd
和dateEnd1
相同的年份差,但实际上结果是不相等的。如果我将年份从2003改为2004,则它们将相等。如果我保留年份不变,但将三月改成二月,它们也将相等。我猜这可能与闰年有关,但我不知道原因。尤其是在那段时间内有4个闰年,但年份计算错误发生在相隔一天的日期上。
我期望在这两种情况下得到的年份差都是12,但是对于变量
dateEnd
,我得到的却是13。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.
(new Date(dateEnd)).getFullYear() - (new Date(dateStart)).getFullYear())
- dsh