date.parse()根据格式提供不同的值(?)

时间:2014-01-16 09:49:28

标签: javascript

请考虑以下简单的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的示例

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

2 个答案:

答案 0 :(得分:1)

如果最近的浏览器可以将日期字符串解释为ISO-8601 - 它将(!!!)。使用此格式,您的日期/时间字符串将被解释为UTC(!!!)

您应尽可能坚持使用"YYYY/MM/DD"日期字符串。它得到普遍支持和明确无误。使用此格式,所有时间都是本地的。

例如:看看这个烂摊子:

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 

while:

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 :(得分:0)

我尝试通过提醒日期字符串来打印日期,然后找到了

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)

因此,在解析“2012年3月21日”时,时区假定为0.但在解析“2012-03-21”时,时区被假定为您的浏览器时区。