2011-01-03 2 views
2

Следующая строка была возвращена из форматированного объекта ответа JSON, и я хочу проанализировать ее на что-то полезное:/Date (1283457528340)/Как мне преобразовать это JSON datetime?

Как его разобрать, используя JavaScript, в нечто удобное?

+0

Можете ли вы предоставить другие полезные детали в этой должности? Это временная метка Unix? Является ли он кодировкой UTC и должен быть преобразован в локальное время? Действительно ли он возвращается как эта строка '/ Date (...) /', и вам нужно разобрать цифры? – jcolebrand

ответ

5

Это количество миллисекунд с начала отсчета.

Эта функция извлекает номер из строки и возвращает объект Date, созданный с этого временного номера.

function dateFromStringWithTime(str) { 
    var match; 
    if (!(match = str.match(/\d+/))) { 
     return false; 
    } 
    var date = new Date(); 
    date.setTime (match[0] - 0); 
    return date; 
} 

Например,

console.log(dateFromStringWithTime('/Date(1283457528340)/').toString()); 

Выход:

Fri Sep 03 2010 02:58:48 GMT+0700 (ICT) 
+0

Предпочтительно поддерживать фигурные скобки ('{}') вокруг блоков результатов оператора if, чтобы поддерживать абсолютную совместимость, несмотря на то, что стандарт позволяет нам опустить их. –

+0

Спасибо за предложение. :) – Thai

+0

Работал как CHAMP! БЛАГОДАРЯ! –

1

Зависит. Что представляет собой это значение? Предполагая миллисекунды временной отметки UNIX (скорректируйте в противном случае), вы можете извлечь значение, затем применить parseInt и построить с ним новый объект Date.

var str  = "/Date(1283457528340)/"; 
var matches = str.match(/([0-9]+)/); 
var d  = parseInt(matches[0]); 
var obj  = new Date(d); 

Затем вы должны быть в состоянии использовать Date объект в обычном режиме. Это непроверено и может иметь опечатки/ошибки, но идея должна быть надежной.

Edit:matches[1] ->matches[0]

+2

Также обратите внимание, что я не выполняю никаких проверок или обработки ошибок здесь. –

Смежные вопросы