2013-03-12 75 views
1

我試圖顯示格式爲「MMM。dd HH:mm:ss.nnn」的日期。它在IE中渲染不正確,我花了相當長的時間,我無法弄清楚爲什麼我不能讓它工作。爲什麼這個新日期不能在JavaScript中工作?

我知道Date.UTC返回Date對象中的毫秒數自1月1日,1970年因此,

var newDate = new Date(Date.UTC(year, month[, date[, hrs[, min[, sec[, ms]]]]]) 
newDate.toString("MMM. dd HH:mm:ss.")+row.timestamp.getMilliseconds(); 

會工作。

例子:

var newDate = new Date(Date.UTC(1950, 10, 10, 10, 09, 09, 100)); 
row.timestamp_f = newDate.toString("MMM. dd HH:mm:ss."); // Output => Nov. 10 05:09:09. 

但是,我從一個jquey.each功能這個作用中,使我一起工作的日期的字符串是ISO 8601: 「2013-03-12T15:14:10.483」 。所以,這是我的想法。

var numMilisecond = Date.parse(row.timestamp); 
var newDate = new Date(numMilisecond); 
row.timestamp_f = newDate.toString("MMM. dd HH:mm:ss."); // Output => Dec. 31 19:00:00. 

row.timestamp是從JSON響應

{"timestamp":"2013-03-12T15:14:10.483" ...} 

爲什麼沒有代碼工作? Date.parse應返回自1970年1月1日以來的毫秒數,然後創建一個新的Date obj,然後將其轉換爲字符串,就像第一個snipet中的代碼一樣。我究竟做錯了什麼?

謝謝。

+0

[請更正您的代碼以使用代碼塊而不是blockquotes](http://stackoverflow.com/editing-help)。 – zzzzBov 2013-03-12 19:36:36

+4

IE正在使用[非標準'toString'行爲](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/toString) – Blazemonger 2013-03-12 19:36:53

+1

可能的重複[在JavaScript中格式化日期](http://stackoverflow.com/questions/1056728/formatting-a-date-in-javascript) – Blazemonger 2013-03-12 19:37:27

回答

0

Date.toString shouldn't accept any arguments。如果你想要一個真正的日期格式解決方案,你需要使用plugin或者自己推出。

var shortmonths = ['Jan','Feb','Mar','Apr',]; // remaining months are left as an exercise for the reader 
row.timestamp_f = shortmonths[newDate.getMonth()] 
        + ". "+newDate.getDate() + " " 
        + newDate.toLocaleTimeString() + "."; 
+0

所以我很尷尬,但事實證明有一個datejs在背景中做了很多魔術 – okysabeni 2013-03-13 16:50:24

相關問題