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

Javascript 这个日期时间格式有简单的转换吗?,javascript,jquery,json,datetime,Javascript,Jquery,Json,Datetime,我使用jQuery从JSON提要中检索数据,作为提要的一部分,我获得了“datetime”属性,如“2009-07-01 07:30:09”。我想把这些信息放进一个javascript日期对象中以便于使用,但我不相信如果我简单地将其插入构造函数中,日期对象会识别这种格式。是否有一个函数或一个聪明的技巧可以用来快速将此格式分解为日期对象可以识别和使用的格式?请参见和 编辑:我最初的答案是 t = new Date(Date.parse("2009-07-01 07:30:09")); 它没有在c

我使用jQuery从JSON提要中检索数据,作为提要的一部分,我获得了“datetime”属性,如“2009-07-01 07:30:09”。我想把这些信息放进一个javascript日期对象中以便于使用,但我不相信如果我简单地将其插入构造函数中,日期对象会识别这种格式。是否有一个函数或一个聪明的技巧可以用来快速将此格式分解为日期对象可以识别和使用的格式?

请参见和

编辑:我最初的答案是

t = new Date(Date.parse("2009-07-01 07:30:09"));
它没有在chrome中抛出任何错误,但仍然错误地解析了日期。这让我很扫兴。确实,Date.parse看起来非常脆弱,用它解析完整的日期和时间可能不是很可靠


Edit2:对于需要对到目前为止的文本进行一些严肃的解析时,这似乎是一个很好的解决方案,但在25 kb的情况下,它对于临时使用来说有点重。

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

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”

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

如果是格林尼治时间,07表示7月而不是8月:

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

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

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

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


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

刚刚在firefox中测试过,我得到了“无效日期”。没有。试着做$(“#date').html(t.getMonth()+”/“+t.getDay());它打印出。。。NaN/Nayep。。。在firefox中,Date.parse对整个字符串都不起作用,现在在最新的linux chrome测试版中返回,这也是我最初测试它的地方。感谢您指出这一点。您需要在javascript代码中实际使用日期吗?如果你不这样做,你可以考虑让字符串保持原样。是的,这似乎是一种格式,即使Date对象试图解析它,它也无法识别。考虑到该属性的实际名称是“datetime”,谷歌搜索会带来很多MS和VB引用,我猜它是某种VB或.NET生成的时间戳。是的,我知道。我需要将请求到JSON提要的日期与一年前进行比较。我知道我可以手动解析字符串,但我希望有一个预先制作的更简单的解决方案。该字符串不是有效的日期格式。它没有指定时区,可以是中国或意大利或其他国家。这意味着开发人员需要知道(我猜是通过文档)隐含的时区。尝试用“T”替换空格,并对其进行解析:
2009-07-01T07:30:09
。这项工作可以用正则表达式轻松完成。JSON数据来自这项服务-还没有深入到网站中我不知道文档,但我确实查看了数据,有一个“src”属性,据我所见,它始终是“us”。我尝试了这项服务,但出于某种原因它不起作用。空间是一个空间,不管怎样,它是有效的。我假设replace()会影响它调用的字符串,而不是返回替换结果。我不知道什么语言能做到这一点,但我知道有一些语言,有时我会把不同的语言混淆起来。
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 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)
var receivedDate = "2009-07-01 07:30:09";
var serializedDate = new Date(receivedDate.replace(" ", "T"));
alert(serializedDate);