2012-09-21 36 views
9

我遇到我的DS.Model解析日期格式为“YYYY-MM-DD”的问题。他们总是落后一天。DS.Model日期属性错误地解析日期(YYYY-MM-DD)

下面是一个例子:

http://jsfiddle.net/ZUV8v/

在控制台上使用Date对象,我得到了类似的结果

> new Date('2012-09-20') 
Wed Sep 19 2012 17:00:00 GMT-0700 (PDT) 

这是一个烬错误或一个javascript错误或Chrome错误或正在我错过了什么?

的Chrome 21.0.1180.89版本的OSX 10.7

+0

你还能够用JS小提琴重现这一点吗?我得到以下结果,似乎是正确的:'date:Thu Sep 20 2012 03:00:00 GMT + 0300(Arabic Standard Time)'。 –

+0

由于您所在的时区,我相信日期对您来说是正确的。所以,就像@jasolko所说,Javascript会用零填充缺失的值,然后根据当前时区对其进行评估。在我的情况下,在太平洋时区减去7小时将日期移到前一天。 –

回答

4

我跑进这只是一天。

按照ECMAScript Specification 15.9.1.15

所有数字都应当是基10.如果MM或DD字段不存在“01”被用作值。如果HH,mm或ss字段不存在,则使用“00”作为值,缺席sss字段的值为“000”。缺席时区偏移的值是“Z”。

new Date('2012-09-20') 

相同

new Date("2012-09-20T00:00:00.000Z") 

控制台然后输出在你的本地时区的价值。

+0

好吧,这是有道理的。你认为烬数据应该不同地解析日期还是应该json日期值总是包含时间和时区? –

+0

对不起,我通常不会在周末看这里。我认为总是包含时区是有意义的。我只写过留在单个时区的内部应用程序,以前从来没有想过这个。 –

+0

没有问题。如果它是一个日期时间对象,我同意但似乎没有一个好的方法做日期只有对象在JavaScript中。我开始了一个关于序列化的新问题。 http://stackoverflow.com/questions/12538242/serialize-date-attributes。谢谢您的帮助。 –