日期对象实例化如下:
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 https://stackoverflow.com/a/163584/436641有关在 JavaScript 中使用字符串创建 Date 对象的一些注意事项。简而言之,为了可靠性,您应该这样做:
new Date(2011, 11, 13);
(请注意,第二个参数月份为 0,表示 1 月到 11 月,而不是 1 到 12。)
在您的特定情况下,当您实例化时"2011-12-13"
它使用 GMT,然后调整到您当地的时区,在您的情况下比 GMT 晚八个小时。所以你提问的前一天是下午 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 https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/parse对于 Firefox 的情况。其他浏览器可能相同也可能不同。这就是为什么最好不要使用字符串(如果您确实使用字符串,请使用长且明确的标准时间戳格式,而不是截断的格式)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)