2014-07-03 46 views
0

當我在八月份使用Javascript Date.parse時,我總是得到第一個。這隻發生在八月份。Date.parse javascript八月錯誤

alert(Date.parse("20 Aug 2014")); // give me Sat Sep 20 2014 00:00:00 GMT-0500 (Central Standard Time) 
alert(Date.parse("20 Aug 2014")); // gives me Fri Aug 01 2014 00:00:00 GMT-0500 (Central Standard Time) 

這是什麼原因?

+0

'new Date(Date.parse(「2014年8月20日」))''回報'Wed Aug 20 2014 00:00:00 GMT-0400(EDT)'在Chrome中使用我。 – Barmar

+0

'Date.parse(「2014年8月20日」)'返回一個時間戳編號,而不是日期。 – Barmar

+0

'console.log(Date.parse(「2014年8月20日」));'返回'1408510800000'和'console.log(Date.parse(「2014年8月20日」));'返回後1408510800000'。我認爲你的代碼中的評論是不正確的。 –

回答

1

Date.parse沒有被記錄爲接受該格式的字符串,所以你不能依賴它來這樣做。

Date.parse(和new Date接受字符串的版本)只需要支持串的這些格式:

在我的EXP所有實現也支持美國mm/dd/yyyy格式(即使在非美國語言環境中),但是這是而不是指定或記錄的行爲。

如果你的輸入字符串是這種格式,你必須自己解析它或使用像MomentJS這樣的庫來爲你做。


附註:在你的代碼,你說Date.parse是給你一個Date(或日期字符串,你說的是警報顯示「星期六2014年9月20日00:00:00 GMT-0500(中央標準時間)「等)。這將是相當令人驚訝的。 Date.parse返回號碼,而不是Date。要獲得等效的Date對象,請使用new Date


*關於「(稍不正確的)」:在ISO-8601,其上沒有時區的字符串定義本地時間的時間。然而,ES5表示那些是格林威治標準時間。