两个日期的比较失败(闰年影响)

时间:2016-12-12 20:40:01

标签: javascript date comparison

1月30日和2月1日闰年似乎相等。

new Date(1972, 01, 30).getTime() == new Date(1972, 02, 01).getTime(); // true

在非闰年,1月30日和2月2日似乎是平等的。

new Date(1973, 01, 30).getTime() == new Date(1973, 02, 02).getTime(); // true

2月1日和2月2日似乎每次都有效。

new Date(1973, 02, 01).getTime() == new Date(1973, 02, 02).getTime(); // false new Date(1972, 02, 01).getTime() == new Date(1972, 02, 02).getTime(); // false

循环超过19年:https://jsfiddle.net/rd1qe9bt/3/

为什么它会像这样工作,我能否以某种方式区分这些日期?

1 个答案:

答案 0 :(得分:2)

您对Date()函数的参数略有偏差。月份从1月份的0到11月到12月份。

当您的示例被修改为使用正确的格式时,它们的行为符合预期:

// comparing January 30, 1972 to February 1, 1972
new Date(1972, 0, 30).getTime() == new Date(1972, 01, 01).getTime(); // false

// comparing January 30, 1973 to February 2, 1973
new Date(1973, 0, 30).getTime() == new Date(1973, 02, 02).getTime(); // false

比较2月1日和2日的例子的论据是正确的,这就是他们每次都工作的原因。