【发布时间】:2012-02-16 12:28:08
【问题描述】:
我为序列化日期属性返回了以下 json:
/日期(1392508800000+0000)/
谁能告诉我如何从中获取 javascript 日期?
【问题讨论】:
标签: javascript
我为序列化日期属性返回了以下 json:
/日期(1392508800000+0000)/
谁能告诉我如何从中获取 javascript 日期?
【问题讨论】:
标签: javascript
if (!Date.parseJSON) {
Date.parseJSON = function (date) {
if (!date) return "";
return new Date(parseFloat(date.replace(/^\/Date\((\d+)\)\/$/, "$1")));
};
}
然后
var myVar = Date.parseJSON("/Date(1392508800000+0000)/")
编辑
我创建了一个函数,它将递归循环通过返回的 JSON 对象并修复任何日期。 (不幸的是它确实依赖于 jQuery),但它是:
// Looks through the entire object and fix any date string matching /Date(....)/
function fixJsonDate(obj) {
var o;
if ($.type(obj) === "object") {
o = $.extend({}, obj);
} else if ($.type(obj) === "array") {
o = $.extend([], obj);
} else return obj;
$.each(obj, function (k, v) {
if ($.type(v) === "object" || $.type(v) === "array") {
o[k] = fixJsonDate(v);
} else {
if($.type(v) === "string" && v.match(/^\/Date\(\d+\)\/$/)) {
o[k] = Date.parseJSON(v);
}
// else don't touch it
}
});
return o;
}
然后你像这样使用它:
// get the JSON string
var json = JSON.parse(jsonString);
json = fixJsonDate(json);
【讨论】: