这个日期时间格式有简单的转换吗?

时间:2010-02-27 22:46:52

标签: javascript jquery json datetime

我正在使用jQuery从JSON提要中检索数据,并且作为提要的一部分,我正在获得“datetime”属性,例如“2009-07-01 07:30:09”。我想把这些信息放到一个javascript Date对象中以方便使用,但是如果我只是将它插入构造函数中,我不相信Date对象会识别这种格式。是否有一个函数或者一个聪明的技巧可以用来快速将这种格式分解为Date对象可以识别和使用的东西?

4 个答案:

答案 0 :(得分:3)

请参阅thisthis

input = "2009-07-01 07:30:09";
var res =  input.match(/([\d\-]+) (\d+):(\d+):(\d+)/);
date = new Date(Date.parse(res[1])); 
date.setHours(res[2]);
date.setMinutes(res[3]);
date.setSeconds(res[4]);
console.log(date);

编辑:我的原始答案是

t = new Date(Date.parse("2009-07-01 07:30:09"));

没有在chrome中抛出任何错误但是所有错误都解析了日期。这让我失望了。 Date.parse确实看起来非常不稳定,用它来解析完整的日期和时间可能不太可靠。

Edit2:DateJS似乎是一个很好的解决方案,当需要对日期进行一些严格的文本解析时,但是在25 kb时,它对于偶然使用来说有点沉重。

答案 1 :(得分:3)

您从该网络服务检索的“日期”属性不是真正的Date,因为它不是可识别的日期格式。

将它作为Date对象处理的最简单方法是用“T”替换空格:

var receivedDate = "2009-07-01 07:30:09";
var serializedDate = new Date(receivedDate.replace(" ", "T"));
alert(serializedDate);

这不是最正确的,因为它不处理时区,但在大多数情况下都可以。

答案 2 :(得分:0)

这可能有点麻烦,但JavaScript Date对象将采用YYYY,MM,DD,HH,MM,SS的参数列表。解析日期值并将其传递给Date构造函数,例如

var splitDT= '2009-07-01 07:30:09'.split(' '); // ['2009-07-01','07:30:09']
var d= splitDT[0].split('-');
var t= splitDT[1].split(':');
alert( (new Date(d[0],d[1],d[2],t[0],t[1],t[2])) );       

呸。不得不使用数组索引值。是的,那是一团糟。但它确实有效。

答案 3 :(得分:0)

var str =“2009-07-01 07:30:09”;

这取决于时区, 如果日期字符串已减去1个月。

如果是GMT时间,07表示7月而不是8月:

var str =“2009-07-01 07:30:09”;

var d=new Date(), time;
str=str.split(/\D0?/);
str[1]-=1;
time=str.splice(3);
d.setUTCFullYear.apply(d,str);
d.setUTCHours.apply(d,time)
alert(d)

/ *返回值:(日期) 2009年7月1日星期三03:30:09 GMT-0400(东部夏令时间)或当地的等值 * /