当我在我的 JS 控制台中尝试以下代码时,它会返回正确的 UTC 表示法(-2 小时):
new Date('1978/04/03').toISOString()
-> "1978-04-02T22:00:00.000Z"
但是,从 4 月 2 日及之前开始,它表现出不同的行为:它只会减去 1 小时而不是 2:
new Date('1978/04/02').toISOString()
-> "1978-04-01T23:00:00.000Z"
当我在我的 JS 控制台中尝试以下代码时,它会返回正确的 UTC 表示法(-2 小时):
new Date('1978/04/03').toISOString()
-> "1978-04-02T22:00:00.000Z"
但是,从 4 月 2 日及之前开始,它表现出不同的行为:它只会减去 1 小时而不是 2:
new Date('1978/04/02').toISOString()
-> "1978-04-01T23:00:00.000Z"
很可能是夏令时开始,但请注意,您的输入格式 ( yyyy/mm/dd
) 不受官方支持,这意味着通过依赖它,您依赖于“......任何特定于实现的启发式或特定于实现的日期格式。 .." JavaScript 引擎碰巧支持,它因引擎而异(例如,浏览器到浏览器)。如果你的格式不是官方支持的格式,你最好自己解析。
但我怀疑你会发现甚至new Date(1978, 3, 3)
有new Date(1978, 3, 2)
一个小时的差异,因为你的 JavaScript 引擎似乎正在解析那个字符串。