2013-06-28 52 views
29

我試圖毫秒轉換爲使用使用JavaScript日期:新的日期(毫秒)返回無效的日期

new Date(Milliseconds); 

構造,但是當我給它的毫秒數說1372439683000它返回無效的日期。如果我去site that converts milliseconds to date它返回正確的日期。

任何想法爲什麼?

+1

'alert(new Date(1372439683000));'適合我。 「無效日期」究竟意味着什麼,你會得到什麼結果? –

+1

@Pekka OP OP得到一個日期對象,該對象被串化爲「'Invalid Date'」。 (例如,嘗試'alert(new Date(「))') – apsillers

回答

64

您並未使用數字,而是使用字符串,它看起來像一個數字。根據MDN,當你傳遞一個字符串到Date,預計

通過解析法(IETF-RFC兼容2822時間戳)識別的格式。

這樣的字符串的一個例子是「December 17, 1995 03:24:00」,但你傳遞,看起來像「1372439683000」,這是不能被解析的字符串。

轉換Milliseconds使用parseInt,或一元+人數:

new Date(+Milliseconds); 
new Date(parseInt(Milliseconds,10)); 
+0

'在開發者工具中新的日期(929397621000)'返回一個有效格式化的日期字符串'Mon Jun 14 1999 15:00:21 GMT-0700(PDT) '但是當我嘗試檢查對象時,它顯示「無效的日期」。在實際使用的代碼中,它也會創建一個無效的日期。 – Michael

+1

@Michael這似乎與此處所述的問題不同。你在做'console.dir(new Date(929397621000))'?如果是這樣,在該實例內部查看'__proto__:Invalid Date'是正確的(或者至少不令人驚訝)的行爲。 'Date * *原型* *'是*無效日期;有效的日期信息存在於'Date * *實例*中,而不是原型上。 – apsillers

+0

我在Chrome的開發人員工具中直接將表達式視爲手錶。我的代碼基本上是做同樣的事情。因爲我打電話給'new'應該產生一個有效的Date對象,是嗎?奇怪的是,即使'新的日期()'產生一個無效的日期(調試器可以奇怪地正確串),我不能檢查的元素(因爲它只顯示「無效的日期」),所以也許這是一個駕駛艙問題。 – Michael

3

Date功能是區分大小寫的:

new Date(Milliseconds); 
1

,而不是這個

new date(Milliseconds); 

使用本

new Date(Milliseconds); 
沒有定義

你的發言會給你日期錯誤

0

我得到這個錯誤是由於不同的原因。

我從redis中讀取了一個key,它的值是一個json。

client.get(someid, function(error, somevalue){});

現在我正在試圖進入字段內somevalue(它是一個字符串),如somevalue.start_time,而不用解析到JSON對象。 這是返回「未定義」,如果傳遞給日期構造函數new Date(somevalue.start_time)返回「無效日期」。

因此,首先使用JSON.parse(somevalue)獲取JSON對象,然後訪問json中的字段解決了問題。