日期格式 Bug
· 阅读需 2 分钟
最新发现一个 JavaScript 中 Date 对象的特性(bug),记录一下,以下是 Claude 的回答:
在JavaScript中,new Date("2025-01-01") 和 new Date("2025/01/01") 的结果确实会不同,这是因为JavaScript解析这两种格式的日期字符串的方式不同:
-
new Date("2025-01-01")- 这是ISO 8601格式,被解析为UTC时间(协调世界时)。 -
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秒
这种差异可能会导致日期计算出现错误,因此在处理日期时要特别注意格式和时区问题。