将json结果转换为日期

时间:2009-08-07 10:46:29

标签: javascript json

  

可能重复:
  How to format a JSON date?

我从JavaScript调用$ getJSON得到以下结果。如何在JavaScript中将start属性转换为正确的日期?

  

[   { “ID”:1, “开始”: “/日期(1238540400000)/”},   { “ID”:2 “开始”: “/日期(1238626800000)/”}   ]

谢谢!

4 个答案:

答案 0 :(得分:95)

您需要从字符串中提取数字,并将其传递到日期constructor

var x = [{
    "id": 1,
    "start": "\/Date(1238540400000)\/"
}, {
    "id": 2,
    "start": "\/Date(1238626800000)\/"
}];

var myDate = new Date(x[0].start.match(/\d+/)[0] * 1);

部分是:

x[0].start                                - get the string from the JSON
x[0].start.match(/\d+/)[0]                - extract the numeric part
x[0].start.match(/\d+/)[0] * 1            - convert it to a numeric type
new Date(x[0].start.match(/\d+/)[0] * 1)) - Create a date object

答案 1 :(得分:83)

我用这个:

function parseJsonDate(jsonDateString){
    return new Date(parseInt(jsonDateString.replace('/Date(', '')));
}

2018年更新:

这是一个老问题。我建议修改服务器代码以返回更好的日期格式,而不是仍然使用这种旧的非标准序列化格式。包含时区信息的ISO字符串,或仅为毫秒。如果您只使用毫秒进行传输,则它应该是服务器和客户端上的UTC

  • 2018-07-31T11:56:48Z - 可以使用new Date("2018-07-31T11:56:48Z")解析ISO字符串,并从Date对象获取 使用dateObject.toISOString()
  • 1533038208000 - 1970年1月1日午夜以来的毫秒 - UTC - 可以使用新日期(1533038208000)解析并从Date对象获取 使用dateObject.getTime()

答案 2 :(得分:10)

如果您使用jQuery

如果您在客户端使用jQuery,您可能会对this blog post感兴趣,它提供了如何全局扩展jQuery的$.parseJSON()函数以自动为您转换日期的代码。

在添加此代码时,您无需更改现有代码。它不会影响对$.parseJSON()的现有调用,但如果您开始使用$.parseJSON(data, true)data字符串中的日期将自动转换为Javascript日期。

它支持Asp.net日期字符串:/Date(2934612301)/以及ISO字符串2010-01-01T12_34_56-789Z。第一个是最常用的后端Web平台,第二个是本机浏览器JSON支持(以及其他JSON客户端库,如json2.js)。

反正。前往博客文章获取代码。 http://erraticdev.blogspot.com/2010/12/converting-dates-in-json-strings-using.html

答案 3 :(得分:6)

如果该数字表示毫秒,请使用Date的构造函数:

var myDate = new Date(1238540400000);