如何在JavaScript中创建不应用夏令时的新日期

huangapple go评论135阅读模式
英文:

How To Create new Date JavaScript without DayLight Applied

问题

... 在特定时区中我得到了以下结果:

> 2023年3月12日星期日 03:00:00 GMT-0700(太平洋夏令时间)

与此同时,当我执行以下操作:

new Date('2023-03-13T02:00:00')

> 2023年3月13日星期一 02:00:00 GMT-0700(太平洋夏令时间)

如果这是因为夏令时的原因,为什么它不在也适用夏令时的3月13日呢?

英文:

I am doing

new Date('2023-03-12T02:00:00') 

... in Pecific TimeZone I am getting

> Sun Mar 12 2023 03:00:00 GMT-0700 (Pacific Daylight Time)

meanwhile when I am doing

new Date('2023-03-13T02:00:00')

> Mon Mar 13 2023 02:00:00 GMT-0700 (Pacific Daylight Time)

if it is due to daylight then why it is not on 13 March which is also daylight applied date

答案1

得分: 1

美国夏令时 于 2023 年 3 月 12 日星期日开始,时间为上午 2:00:

当地标准时间即将达到 2023 年 3 月 12 日星期日 02:00:00 时,时钟将向前调整 1 小时至当地夏令时时间 2023 年 3 月 12 日星期日 03:00:00。

这意味着您当地时间 2023-03-12T02:00:00 不存在。JavaScript 在解析日期时会尽力而为,有时候过于努力:

console.log(new Date("2023-02-31"));
2023-03-03T00:00:00.000Z

在这种情况下,它应用了一种有点合理的纠正措施:当时钟达到 2:00 时,它会向前调整到 3:00,就像美国法规规定的那样。

  • 如果您的用例需要使用当地时间,您必须意识到每年都会少一个小时,另一个小时(夏令时结束时)会连续运行两次(尽管在不同的时区)。

  • 如果您的用例需要绝对时间,您可以在所有计算中使用协调世界时(UTC),并在需要时将其转换为当地时区显示。

英文:

Daylight Saving Time in United States starts on Sun, Mar 12, 2023 2:00 AM:

> When local standard time is about to reach
Sunday, 12 March 2023, 02:00:00 clocks are turned forward 1 hour to
Sunday, 12 March 2023, 03:00:00 local daylight time instead.

That means that your local time 2023-03-12T02:00:00 does not exist. JavaScript is designed to try really hard when parsing dates, some times too hard:

> console.log(new Date("2023-02-31"));
2023-03-03T00:00:00.000Z

In this case it applies a correction that kind of makes sense: when clock reaches 2:00 it moves forward to 3:00, just as US legislation mandates.

  • If your use case requires local times, you must be aware that there's a whole hour that's skipped every year and another hour (when DST ends) that runs twice in a row (albeit in different time zones).

  • If your use case requires absolute times, you can use UTC for all your calculations and convert to local time zone on display, should that be needed.

huangapple
  • 本文由 发表于 2023年3月8日 16:47:17
  • 转载请务必保留本文链接:https://go.coder-hub.com/75670946.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定