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

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

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

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

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

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

看到这个和这个 。

 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时,它对于偶然使用来说有点沉重。

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) 

/ *返回值:(日期)Wed Jul 01 2009 03:30:09 GMT-0400(东部夏令时)或当地的等值* /

这可能有点麻烦,但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])) ); 

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