ti-enxame.com

Desserializando o cliente do cliente AJAX DATAS JSON

Dado a seguinte representação de Data de JSON:

"\/Date(1221644506800-0700)\/"

Como você desserializa isso em seu formulário tipo Data de JavaScript?

Eu tentei usar o MS AJAX Javascioptserializer como mostrado abaixo:

Sys.Serialization.JavaScriptSerializer.deserialize("\/Date(1221644506800-0700)\/")

No entanto, tudo que eu recebo é a data de cadeia literal.

36
Brian Chavez

Para aqueles que não querem usar o Microsoft AJAX, basta adicionar uma função de protótipo à classe de string.

Por exemplo.

    String.prototype.dateFromJSON = function () {
    return eval(this.replace(/\/Date\((\d+)\)\//gi, "new Date($1)"));
};

Não quer usar eval? Tente algo simples como

var date = new Date(parseInt(jsonDate.substr(6)));

Como uma nota lateral, usei para pensar que a Microsoft estava enganosa usando este formato. No entanto, a especificação JSON não é muito clara quando se trata de definir uma maneira de descrever as datas em JSON.

3
Alex Nolasco

Na verdade, o MomentJs suporta esse tipo de formato, você pode fazer algo como:

    var momentValue = moment(value);

    momentValue.toDate();

Isso retorna o valor em um formato de data de JavaScript

2
tavo

O grande número é o tempo padrão JS

new Date(1221644506800)

Qua Sep 17 2008 19:41:46 GMT + 1000 (EST)

1
Daniel