gpt4 book ai didi

javascript - 有没有办法在 Javascript `Date` 对象中表示 2012 年 10 月 21 日?

转载 作者:搜寻专家 更新时间:2023-11-01 04:42:29 25 4
gpt4 key购买 nike

我注意到时区和 Javascript Date 对象有些奇怪。

在 Linux 机器上试试这个:

$ TZ='America/Sao_Paulo' js 
js> new Date(2012, 9, 21, 0, 0, 0).toString()
"Sat Oct 20 2012 23:00:00 GMT-0300 (BRST)"

我发现不可能获得表示 2012 年 10 月 21 日的对象。每次尝试获取当天 00:00 到 01:00 之间的 Date 都会得到前一天的日期晚上 11:00 和 00:00。

(Windows 用户可以将他们的时区更改为巴西利亚/GMT-03 以体验相同的行为)

向此类日期对象添加一小时(或一天)会返回相同的日期

我想这与巴西那个特定日期的夏令时有关,但我绝对不知道如何处理。

我有一个循环遍历一个月中的几天(对于日历应用程序),在到达 2012 年 10 月 20 日时,它显然会永远循环。

一定是我做错了什么,但我不知道如何处理这种情况,因为我猜它也可能发生在其他时区。

在 Javascript 中处理 Date 的推荐方法是什么,以确保不会发生此类与时区/夏令时相关的问题?

最佳答案

这是绝对正确的行为。由于巴西本地时间 10 月 21 日根本不存在 DST 午夜。如果您只需要构建一个日历,您可以使用 new Date(2012, 9, 21, 0, 0, 0).toUTCString() 而不是 new Date(2012, 9, 21, 0, 0, 0).toString() 和其他 UTC methods .

例如,要创建 UTC 日期,您可以使用 new Date(Date.UTC(2012, 9, 21, 0, 0, 0));

关于javascript - 有没有办法在 Javascript `Date` 对象中表示 2012 年 10 月 21 日?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12705485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com