1月30日和2月1日闰年似乎相等。
new Date(1972, 01, 30).getTime() == new Date(1972, 02, 01).getTime(); // true
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/
为什么它会像这样工作,我能否以某种方式区分这些日期?
答案 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日的例子的论据是正确的,这就是他们每次都工作的原因。