将 Json 日期字符串转换为 JavaScript 日期对象

Posted

技术标签:

【中文标题】将 Json 日期字符串转换为 JavaScript 日期对象【英文标题】:Convert Json date string to JavaScript date object 【发布时间】:2011-03-07 02:17:29 【问题描述】:

我有以下 JSON 对象,其中包含以下格式的日期字段:


    "AlertDate": "\/Date(1277334000000+0100)\/",
    "Progress": 1,
    "ReviewPeriod": 12 

我想写一个正则表达式或者一个函数把它转换成一个javascript对象,这样它就变成了:


    "AlertDate": new Date(1277334000000),
    "Progress": 1,
    "ReviewPeriod": 12 

上述日期格式在 JQuery parseJSON 方法中验证失败。

我想将 1277334000000+0100 转换为正确的毫秒数,以便在验证后调用 eval 时创建正确的日期。

谁能帮助我解决这个问题?

【问题讨论】:

我想你写了两次"AlertDate": 【参考方案1】:

除非你真的需要,否则你真的不应该使用 eval;为什么不直接在 JSON 中包含秒数,并在需要格式化时调用该数字的 Date?

如果必须,可以使用正则表达式从字符串中解析出数字

【讨论】:

【参考方案2】:

这是你要找的吗?

如果这是您对象中的一项: o = "AlertDate": "/Date(1277334000000+0100)/", “进度”:1、 “审查期”:12

此代码将提取第一个值数字(忽略“+0100”),转换为数字并创建日期对象。

var rxFirstNumber = /(\d+)/;
var strAlertDate = o.AlertDate;
var arrMatches,intTimeStamp;

arrMatches = strAlertDate.match(rxFirstNumber);
if (arrMatches !== null && arrMatches.length > 0) 
    intTimeStamp = parseInt(arrMatches[1],10);
    o.AlertDate = new Date(intTimeStamp);

如果您可以相信您的数据始终包含该字符串数据(或至少该 AlertDate 将始终是一个包含数字的字符串),则可以用一行(讨厌且不可维护的)代码来表示:

o.AlertDate = new Date(parseInt(o.AlertDate.match(/(\d+)/)[1],10));

【讨论】:

【参考方案3】:

我需要一个更全面的答案,而不仅仅是更改单个属性的日期。

我需要更改 JSON 字符串中的所有日期,而不仅仅是一个属性。

我最终得到了以下正则表达式

data = data.replace(new RegExp('\\"\\\\\/Date\\((\\d13\\+\\d4)\\)\\\\\/\\"', 'g'), "new Date($1)");

【讨论】:

【参考方案4】:

自动解析日期的可重用 jQuery 扩展

我编写了一个 jQuery 扩展(如果你确实使用了,我希望/建议你这样做),它改变了 $.parseJSON() 的功能,因此它能够为你自动解析日期。不再需要重复代码来解析日期。

用代码检查my blog post。

【讨论】:

【参考方案5】:

您好,我只想添加到 BalusC 答案:

如果您希望某些较旧日期的日期不被未定义,而不是

json.AlertDate = new Date(parseInt(json.AlertDate.replace(/(^.*\()|([+-].*$)/g, '')));

你可以:

var dateObject = new Date(new Number(yourDateVariable.replace(/(^.*\()|([+-].*$)/g, '')));

【讨论】:

以上是关于将 Json 日期字符串转换为 JavaScript 日期对象的主要内容,如果未能解决你的问题,请参考以下文章

将JSON字符串转换为日期[重复]

JavaScrip t对象和 JSON 数据格式转换

将 JavaScript Date 对象转换为 JSON 字符串时日期更改为前一天

将 JSON 时间戳字符串转换为 pandas 数据框中的 python 日期

使用 Moshi 将字符串日期从 json 转换为 Date 对象

将 UNIX 时间从 json 导入(swift 结构)转换为日期作为字符串并填充表