gpt4 book ai didi

javascript Date 为什么 Date new Date ("2011-12-13") 被认为是星期一而不是星期二?

转载 作者:行者123 更新时间:2023-12-04 08:28:07 28 4
gpt4 key购买 nike

像这样实例化的日期对象:

new Date("2011-12-13")

返回一个认为自己是星期一的日期对象:

Date {Mon Dec 12 2011 16:00:00 GMT-0800 (PST)}

但是根据我的日历,2011 年 12 月 13 日是星期二。奇怪的是,当我像这样实例化日期对象时:

new Date("12/13/2011")

这(正确地)返回星期二:

Date {Tue Dec 13 2011 00:00:00 GMT-0800 (PST)}

如何使用初始示例中的语法(年-月-日)并根据我的日历获得正确的星期几?

最佳答案

您可能想查看 https://stackoverflow.com/a/163584/436641有关使用字符串在 JavaScript 中创建 Date 对象的一些注意事项。简而言之,为了可靠性,您应该这样做:

new Date(2011, 11, 13);

(请注意,第二个参数,月份,从 1 月到 11 月是 12 月,而不是 1 到 12。)

在您的特定情况下,当您使用 "2011-12-13" 实例化时,它使用 GMT,然后调整到您本地的时区,在您的情况下,它比 GMT 晚 8 小时。所以你问的前一天下午 4 点。所以那是星期一,而不是星期二。 (查看结果中说时间是 16:00:00 并且日期是 12 号而不是 13 号?)

当您使用 "12/13/2011" 实例化时,您将在本地时区的 13 号午夜到达。所以你得到星期二,你要求的那一天。

差异(可能)解释为 Date 将字符串传递给它的静态 parse() 方法,该方法(可能)处理其中一个字符串作为 ISO 8601 时间戳,另一个作为 RFC 822 时间戳,并且这些时间戳格式的时区默认/最佳猜测是不同的。参见 https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/parse对于 Firefox 的情况。其他浏览器可能相同也可能不同。这就是为什么最好不要使用字符串(如果您确实使用字符串,请使用长而明确的标准时间戳格式,而不是 chop 的格式)。

关于javascript Date 为什么 Date new Date ("2011-12-13") 被认为是星期一而不是星期二?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8612631/

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