Converter os resultados json para uma data [duplicado]
Tenho o seguinte resultado de uma chamada de $getJSON do JavaScript. Como converter a propriedade start para uma data apropriada em JavaScript?possível duplicado:
Como formatar uma data JSON?
Obrigado![ {"id": 1, "Início": "/ Date (1238540400000)/"}, {"id": 2, "Início": "/ Date (1238626800000)/"} ]
4 answers
Tens de extrair o número do texto, e passá-lo para a data constructor
:
var x = [{
"id": 1,
"start": "\/Date(1238540400000)\/"
}, {
"id": 2,
"start": "\/Date(1238626800000)\/"
}];
var myDate = new Date(x[0].start.match(/\d+/)[0] * 1);
As partes são:
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
Eu uso isto:
function parseJsonDate(jsonDateString){
return new Date(parseInt(jsonDateString.replace('/Date(', '')));
}
Se utilizar jQuery
No caso de usar o jQuery do lado do cliente, poderá estar interessado em Este post que fornece o código de como estender globalmente a função $.parseJSON()
do jQuery para converter automaticamente as datas para si.
Você não tem que alterar o código existente no caso de adicionar este código. Não afecta as chamadas existentes para $.parseJSON()
, mas se começar a usar $.parseJSON(data, true)
, as datas em data
serão automaticamente convertidas para as datas em Javascript.
Suporta Asp.net cadeias de datas: /Date(2934612301)/
assim como cadeias de caracteres ISO 2010-01-01T12_34_56-789Z
. O primeiro é mais comum para a maioria das plataformas web back-end usadas, o segundo é usado pelo navegador nativo JSON support (bem como outras bibliotecas do lado cliente JSON2.js).
Se esse número representar milisegundos, use o construtor da data:
var myDate = new Date(1238540400000);