Конвертировать формат даты .NET в дату JavaScript - PullRequest
1 голос
/ 16 февраля 2012

У меня есть следующий json, возвращающийся для сериализованного свойства даты:

/ Date (1392508800000 + 0000) /

Может кто-нибудь сказать мне, как я могу получить дату javascript из этого

1 Ответ

4 голосов
/ 16 февраля 2012
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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...