2012-01-25 3 views
0

Я спрашиваю facebook graph api. Он возвращает дату в следующем формате: 2012-01-23T23:52:29+0000.Разница дат в javascript/jQuery

Мне нужно найти разницу дат этого типа в javascript. Это не является допустимой датой в JavaScript (по Date.parse() или new Date())

Я имею в виду замена 'T' с ' ' (пробел), '-' с '/' и '+0000' с '' (пустая строка). Это единственный способ? Или я чего-то не хватает?

Кроме того, если это единственный способ, может ли кто-нибудь дать мне регулярное выражение для замены всего за один раз?

Скорость выполнения - моя главная забота.

+1

ли скорость действительно имеет значение * что * много? (Если это так, было бы интересно увидеть тестовый пример jsperformance для него.) Отображаемый формат времени - ISO8601 (ключевое слово), кстати. –

+0

Когда вы говорите, что скорость является основным фактором, вы имеете в виду скорость выполнения? Если да, видите ли какие-либо проблемы с производительностью? – Anurag

+2

Возможный дубликат [Как преобразовать значение даты в формате UTC в объект даты в Javascript?] (Http://stackoverflow.com/questions/498578/how-can-i-convert-a-date-value- in-utc-format-to-date-object-in-javascript) –

ответ

2

Я бы сказал, что да заменить - с /, так как это, что ISO-то, что стандарт диктат (Facebook любит ввернуть вещи вокруг, как <meta> теги с атрибутами property вместо name, как они должны быть).

Сохраните часть часового пояса, поскольку JS понимает это и будет обрабатывать его соответствующим образом.

В целом, вы хотите new Date(input.replace(/-/g,'/'));.

В ответ на замечания, лучше (более полное) решение будет:

new Date(input.replace(/-/g,'/').replace("T"," ").replace(/\+[0-9]+$/,'')); 
+0

Он выдает неверную дату в firefox 9.0. Работает в chrome, хотя – Jashwant

+0

Да, хорошо, Firefox отстой в любом случае ... –

+0

У вас есть регулярное выражение для firefox тоже? – Jashwant

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