Преобразование результатов json в дату
Возможный дубликат:
Как отформатировать дату JSON?
У меня есть следующий результат от вызова $getJSON из JavaScript. Как преобразовать свойство start в нужную дату в JavaScript?
[ { "ID": 1, "старт": "/Дата (1238540400000)/" }, { "ID": 2, "старт": "/Дата (1238626800000)/" } ]
Спасибо!
Ответы
Ответ 1
Вам нужно извлечь номер из строки и передать его в конструктор Date:
var x = [ {"id":1,"start":"\/Date(1238540400000)\/"}, {"id":2,"start":"\/Date(1238626800000)\/"} ];
var myDate = new Date(x[0].start.match(/\d+/)[0] * 1);
Детали:
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
Ответ 2
Я использую это:
function parseJsonDate(jsonDateString){
return new Date(parseInt(jsonDateString.replace('/Date(', '')));
}
Ответ 3
Если вы используете jQuery
Если вы используете jQuery на стороне клиента, вас может заинтересовать это сообщение в блоге, в котором содержится код, как глобально расширить jQuery $.parseJSON()
, чтобы автоматически конвертировать даты для вас.
Вам не нужно менять существующий код в случае добавления этого кода. Он не влияет на существующие вызовы на $.parseJSON()
, но если вы начнете использовать $.parseJSON(data, true)
, даты в строке data
будут автоматически преобразованы в даты Javascript.
Он поддерживает строки даты Asp.net: /Date(2934612301)/
, а также строки ISO 2010-01-01T12_34_56-789Z
. Первый из них наиболее распространен для большинства используемых серверных веб-платформ, второй - поддержкой встроенного браузера JSON (а также других клиентских библиотек JSON, таких как json2.js).
В любом случае. Перейдите к сообщению в блоге, чтобы получить код.
http://erraticdev.blogspot.com/2010/12/converting-dates-in-json-strings-using.html
Ответ 4
Если это число представляет миллисекунды, используйте конструктор Date:
var myDate = new Date(1238540400000);