为什么javascript new Date会根据日期的格式增加一个小时



我有点困惑,为什么给定相同的日期,但在不同的格式中,Javascript将时间更改了一个小时。

new Date("1969-12-22")
Date Mon Dec 22 1969 01:00:00 GMT+0100 (Greenwich Mean Time)

new Date("1969/12/22")
Date Mon Dec 22 1969 00:00:00 GMT+0100 (Greenwich Mean Time)

请注意,第一个示例中的时间比第二个示例中的时间早一小时,但日期完全相同,只是格式不同。

这给我的问题是,我无法使用.getTime()来比较相等的时间戳。

有谁知道为什么加班一小时吗?

第一个输入是ISO 8601格式,更具体地说,是只有日期的格式。MDN文档说明了这种格式:

当时区偏移量不存在时,仅日期格式被解释为UTC时间

第二个输入不是ISO格式,因此它的解释严重依赖于代理:

如果String不符合标准格式,函数可能会退回到任何特定于实现的启发式方法或特定于实现的解析算法。

由于缺少时区,日期通常用本地时区进行解释。

在这两种情况下,输出都是您的本地时区,因此第一次输入可能会有所不同,除非您的时区恰好是UTC。

最新更新