【问题标题】:Comparison of two dates fails (leap year influence)两个日期比较失败(闰年影响)
【发布时间】:2016-12-12 20:40:01
【问题描述】:

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/

为什么会这样?我能以某种方式区分这些日期吗?

【问题讨论】:

  • 你检查console.log(new Date(1972, 01, 30))console.log(new Date(1972, 02, 01))了吗?

标签: javascript date comparison


【解决方案1】:

您对 Date() 函数的参数略有偏差。一月到十二月的月份是从 0 到 11。

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

// 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 日的示例的论点是正确的,这就是它们每次都有效的原因。

【讨论】:

    猜你喜欢
    • 2017-07-15
    • 1970-01-01
    • 2021-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多