日期对象实例化如下:
new Date("2011-12-13")
Run Code Online (Sandbox Code Playgroud)
返回一个认为自己是星期一的日期对象:
Date {Mon Dec 12 2011 16:00:00 GMT-0800 (PST)}
Run Code Online (Sandbox Code Playgroud)
但根据我的日历,12/13/2011是星期二.奇怪的是,当我像这样实例化日期对象时:
new Date("12/13/2011")
Run Code Online (Sandbox Code Playgroud)
这(正确)返回星期二:
Date {Tue Dec 13 2011 00:00:00 GMT-0800 (PST)}
Run Code Online (Sandbox Code Playgroud)
如何在我的初始示例(年 - 月 - 日)中使用语法,并根据我的日历获取一周中的正确日期?
您可以查看/sf/answers/11450911/,了解使用字符串在JavaScript中创建Date对象的一些注意事项.简而言之,为了可靠性,您应该这样做:
new Date(2011, 11, 13);
Run Code Online (Sandbox Code Playgroud)
(注意,第二个参数,月份,从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时间戳,并且默认值/最佳 - 这些时间戳格式的时区猜测是不同的.有关Firefox的情况,请参阅https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/parse.其他浏览器可能相同也可能不同.这就是为什么最好不使用字符串(如果你使用字符串,使用长而明确的标准时间戳格式而不是截断的格式).
| 归档时间: |
|
| 查看次数: |
9183 次 |
| 最近记录: |