2013-06-18 27 views
0

我想實例化一個日期,以便代碼在Chrome和IE(等)中工作。理想情況下,如果可能的話,我希望找到一個簡單的聲明而不是UDF。當時間塊表示爲T00:00:00時,是不是可以Date.parse JavaScript中的字符串值?請解釋這個關於日期構造函數的javascript調試器輸出

下面是我在Visual Studio中立即窗口中的內容; caldate包含由後端數據庫返回的日期的字符串表示形式;將該字符串傳遞給Date.parse()將返回時間戳1371441600000,並將該時間戳傳遞給Date()構造函數返回Mon Jun 17 00:00:00 EDT 2013[prototype]: Invalid Date

?caldate 
"2013-06-17T00:00:00" 
?Date.parse(caldate); 
1371441600000 
?new Date(Date.parse(caldate)); 
Mon Jun 17 00:00:00 EDT 2013 
    [prototype]: Invalid Date 
+0

你是說上面的工作在Chrome中,但不是在IE中? – nnnnnn

回答

1

Invalid Date是正常的。這正是調試器爲Date的原始對象打印的內容。我相信這是因爲調試器調用原始對象上的toString方法而不提供實際的Date實例,因此toString方法返回"Invalid Date"。我建議你閱讀MDN documentation on Date

您可以使用new Date(caldate)從字符串創建Date

+0

'new Date(caldate)'在Chrome中返回第16位,在IE中返回第17位。感謝您的鏈接。 – Tim

+0

時區問題。 – Tim

+0

下面是關於日期格式的瀏覽器兼容性的很好的圖表:http://dygraphs.com/date-formats.html。這也是:http://blog.dygraphs.com/2012/03/javascript-and-dates-what-mess.html你正在使用的字符串應該適用於現代瀏覽器。你所看到的16日和17日之間的區別可能是字符串被解釋爲UTC還是本地時間之間的區別。也許我提供的鏈接可以幫助你理清。 – Brandon