操作日期时日期时区发生变化,导致日期数学不正确

问题描述 投票:0回答:1

当我创建一个新日期时,当我尝试将其修改为例如获取 30 天前的日期,当我打印出来时,该日期所表示的时区发生了变化,因此数学结果不正确。

在下面的示例中,它最初以 EDT 打印,然后在使用

setDate
后更改为 EST。不仅如此,数学结果也是不正确的(误差一小时),因为时间相同但时区相差一小时,减去整天显然应该得到相同的时间。

> d = new Date();
< Thu Apr 04 2024 17:14:02 GMT-0400 (Eastern Daylight Time)
> d.setDate(d.getDate() - 30)
< 1709676842549
> d
< Tue Mar 05 2024 17:14:02 GMT-0500 (Eastern Standard Time)

我在这里错过了什么或做错了什么?

javascript date dst
1个回答
0
投票

问题是夏令时在 3 月 10 日发生了变化,因此当您从示例中的当前日期(4 月 4 日)减去 30 天时,时区会正确更改,因为 3 月 5 日仍然是美国东部时间。

© www.soinside.com 2019 - 2024. All rights reserved.