2011-12-03 76 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。