2011-12-03 81 views
1

我工作的JavaScript和停留在一個小問題。如何格式化格式正確日期在JavaScript

我收到此日期JSON響應1322919399447-0500

,我想格式化這個樣:6:50 PM, Dec 3rd 2011

+0

可能重複[如何格式化JSON日期?(http://stackoverflow.com/questions/206384/how-to-format-a-json-date) – ajreal

+0

是一個熱門的話題,你可以找到現有的問題(當然是這樣) – ajreal

+0

你能否請你重溫這個問題,檢查答案並接受你最喜歡的那個? – kubetz

回答

1

我不確定這是否是最好的方法(我確定它不是,實際上),但基本上你可以將該日期字符串放入一個js Date對象中,然後將它們拉出來, :

var dateThing = new Date(1322919399447-0500); 
dateThing.getFullYear(); // 2011 
dateThing.getDay(); // 6 
dateThing.getDate(); // 3 
dateThing.getMonth(); // 11 
dateThing.getHours(); // 8 (test for anything over 12, that indicates PM) 
dateThing.getMinutes(); // 36 

然後,您可以將這些部分連接成您自己的格式。就像我說的那樣,可能有更好的方法,但是這種方法很有效。

+0

哦,這個帖子裏提到了很多好東西。一探究竟。 –

+2

Date構造函數中的'-0500'不是一個好主意。首先,它打算是一個時區偏移量(從UTC開始的小時數)。另一方面,嚴格模式外的'0500'將導致'320',即八進制'0500'的十進制值。所以實際上,你距實際日期值320毫秒,而不是5小時。 –

+0

thanx很多....! –

1

我用這個方便的小date format addon和它的工作對我非常好。甚至在這個月裏照顧了討厭的互聯網瀏覽器怪癖。

1

Here是你的榜樣輸入該代碼段。它使用script鏈接Zoidberg

此代碼返回格式的UTC日期。如果您想要本地日期,請從return聲明中刪除UTC:

function convertTime(dateString) { 
    // get ms part from the string 
    var milis = +dateString.substring(0, 13); 
    // get timezone part as "# of hours from UTC", e.g. "-0500" -> -5 
    var offset = +dateString.substring(13, 16); 
    // move the time for "offset" number of hours (to UTC time) 
    var date = new Date(milis - offset * 3600000); 
    // using http://stevenlevithan.com/assets/misc/date.format.js 
    return date.format("UTC:h:MM TT, mmm dS yyyy"); 
} 

編輯:改變+ offset *- offset *,因爲我們要正常化UTC。