请考虑以下简单的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
答案 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”时,时区被假定为您的浏览器时区。