跳到主要内容

日期格式 Bug

· 阅读需 2 分钟
1adybug
子虚伊人

最新发现一个 JavaScriptDate 对象的特性(bug),记录一下,以下是 Claude 的回答:

在JavaScript中,new Date("2025-01-01")new Date("2025/01/01") 的结果确实会不同,这是因为JavaScript解析这两种格式的日期字符串的方式不同:

  1. new Date("2025-01-01") - 这是ISO 8601格式,被解析为UTC时间(协调世界时)。

  2. new Date("2025/01/01") - 这是非标准格式,被解析为本地时间(你电脑所在的时区)。

所以,如果你在不同时区运行相同的代码,使用斜杠格式(2025/01/01)会得到根据你的本地时区调整后的日期时间,而使用连字符格式(2025-01-01)会得到相同的UTC时间,然后显示时会根据本地时区进行转换。

举个例子,如果你在东八区(北京时间):

  • new Date("2025-01-01") 会被解析为UTC的2025年1月1日0时0分0秒,但显示时会转换为东八区的2025年1月1日8时0分0秒
  • new Date("2025/01/01") 会直接被解析为东八区的2025年1月1日0时0分0秒

这种差异可能会导致日期计算出现错误,因此在处理日期时要特别注意格式和时区问题。