date.parse( ) provides different values depending on format (?)
考虑下面的简单 javascript 代码示例。
我希望 d 和 x 具有相同的值,例如d-x = 0,但好像不是这样?我不允许使用用于 var x 的日期字符串格式,还是有其他原因? (我无法在 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse 中直接找到这样的限制,但也不是字符串格式 yyyy-mm- 的示例dd)
1 2 3 4 5 6 7 8 9 | var d = Date.parse("March 21, 2012"); alert(d); //val 1332284400000 var x = Date.parse("2012-03-21"); alert(x); //val 1332288000000 alert(d-x); //val -3600000 |
如果最近的浏览器可以将日期字符串解释为 ISO-8601 - 它会(!!!)。使用这种格式,您的日期/时间字符串将被解释为 UTC(!!!)
您应该尽可能坚持使用
例如:看看这个烂摊子:
1 2 3 4 5 6 | new Date("2013-07-27T10:10:10") chrome : Sat Jul 27 2013 13:10:10 GMT+0300 (Jerusalem Daylight Time) ff: Sat Jul 27 2013 10:10:10 GMT+0300 (Jerusalem Standard Time) ie8 : nan ie : Sat Jul 27 10:10:10 UTC+0300 2013 |
而:
1 2 3 4 5 | new Date("2013/07/27 10:10:10") ie: Sat Jul 27 10:10:10 UTC+0300 2013 chrome: Sat Jul 27 2013 10:10:10 GMT+0300 (Jerusalem Daylight Time) ff: Sat Jul 27 2013 10:10:10 GMT+0300 (Jerusalem Standard Time) |
我尝试通过提醒日期字符串来打印日期,结果发现
1 2 3 4 5 6 7 | var d = Date.parse("March 21, 2012"); var formatted_d = new Date(d); alert(formatted_d); var x = Date.parse("2012-03-21"); var formatted_x = new Date(x); alert(formatted_x); |
2012 年 3 月 21 日星期三 00:00:00 GMT 1100 (EST) 和
2012 年 3 月 21 日星期三 11:00:00 GMT 1100 (EST)
所以在解析"March 21, 2012"时,时区假定为0。但在解析"2012-03-21"时,时区假定为您的浏览器时区。