2012-09-21 34 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。謝謝您的幫助。 –