我正在使用jQuery从JSON数据源检索数据,而在数据源中,我获得了像“2009-07-01 07:30:09”这样的“datetime”属性。我想将此信息放入javascript Date对象中以便轻松使用,但我不认为Date对象会识别此类格式,如果我只是将其插入构造函数中。是否有一种函数或可能使用的巧妙技巧来快速将此格式分解为Date对象可以识别和使用的内容?
我正在使用jQuery从JSON数据源检索数据,而在数据源中,我获得了像“2009-07-01 07:30:09”这样的“datetime”属性。我想将此信息放入javascript Date对象中以便轻松使用,但我不认为Date对象会识别此类格式,如果我只是将其插入构造函数中。是否有一种函数或可能使用的巧妙技巧来快速将此格式分解为Date对象可以识别和使用的内容?
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"));
在谷歌浏览器中没有出现任何错误,但是日期解析仍然不正确,这让我感到困扰。看来,Date.parse确实有点不稳定,使用它来解析完整的日期和时间可能不太可靠。
编辑2:DateJS似乎是解析文本转换为日期时的好解决方案,但大小达25 kb,对于非正式使用有些沉重。
Date
,因为它不是一种被认可的日期格式。var receivedDate = "2009-07-01 07:30:09";
var serializedDate = new Date(receivedDate.replace(" ", "T"));
alert(serializedDate);
这并不是最正确的做法,因为它没有处理时区,但在大多数情况下都可以使用。
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])) );
var str = "2009-07-01 07:30:09";
这取决于时区,以及日期字符串是否减去了一个月。
如果是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(美国东部夏令时)或当地等效时间 */
2009-07-01T07:30:09
。这样做可以使用正则表达式轻松完成。 - Alex Bagnolinijavascript:alert(Date(Date.parse("2009-07-01T07:30:09")));
在 Google Chrome(Linux Beta)中错误地返回当前时间和日期。 - anshul