【问题标题】:javascript getMonth() off by 2?javascript getMonth() 关闭 2?
【发布时间】:2021-09-29 01:02:37
【问题描述】:

我知道getMonth() is zero indexed 所以,例如,六月是 5。但我知道在某些情况下它“关闭”了 2。

myDate = new Date(1622513190000)
month = myDate.getMonth()

console.log(myDate)
console.log(month)

返回:

2021-06-01T02:06:30.000Z

4

任何人都知道为什么返回 4 而不是 5?我正在使用节点 v14.15.5 并获得其他日期的预期结果(9 月 8 日,8 月 7 日)

谢谢!

【问题讨论】:

  • 祖鲁时间 1 日凌晨 2 点,所以如果 您的 时区是 GMT-3:00 或更远的西部(例如您在北美),您所在的地方仍然是五月.
  • 试试myDate.getUTCMonth()。 :-)

标签: javascript node.js date


【解决方案1】:

您好,欢迎来到这里 :)

使用日期和时区有点棘手,这里的每个人都可以证明这一点。有关一般信息,我建议您阅读 this article 了解协调世界时。

您在myDate 值中看到的Z 表示Zulu time,UTC±00:00 的军事名称,参考时区。 ±00:00 代表与祖鲁时间的最终偏移。

在对这个问题发疯后,我建议你:

  • 总是以 Zulu 格式获取和存储日期,然后用它们计算时间流逝
  • 您可以向用户显示本地日期,但这只是为了显示它们。如果您必须使用用户输入进行计算,请首先获取 UTC 等效值(如 @RobG 建议的那样)。

祝你好运! :)

【讨论】:

  • 这非常有帮助 - 谢谢!
  • @pacificpythagoras,很高兴读到它 :) 编码快乐!
猜你喜欢
  • 2013-05-24
  • 1970-01-01
  • 2013-09-08
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 2022-10-16
相关资源
最近更新 更多