Проблема с форматами даты в JavaScript в разных браузерах - PullRequest
10 голосов
/ 25 августа 2010

Я работаю с датами в ленте RSS, но нахожу разные результаты при использовании приведенного ниже кода в IE, Chrome и Firefox:

new Date('2001-01-01T12:00:00Z')

Firefox доволен этим, но Chrome и IE возвращаютНеверная дата.

Я подумал, что попробую заменить T и Z следующим образом:

new Date('2001-01-01 12:00:00')

На этот раз Chrome доволен этим, но Firefox и IE возвращают неверную дату.

Есть идеи, что мне делать, чтобы получить объект даты во всех браузерах с этим форматом?!

Большое спасибо, Тим

Ответы [ 4 ]

23 голосов
/ 25 августа 2010

Это работает во всех браузерах на моем компьютере - попробуйте в консоли:

alert(new Date('2001/01/31 12:00:00'))

так

new Date('2001-01-01T12:00:00Z'.replace(/\-/g,'\/').replace(/[T|Z]/g,' '))

IE8, FF3.6, Safari4, Chrome

3 голосов
/ 25 августа 2010

Это работает во всех основных 5 браузерах и заставляет все браузеры распознавать время как GMT / UTC, а не как местное время (суффикс Z означает время UTC):

new Date('2001-01-01T12:00:00Z'.replace(/\-/g,'\/').replace(/T/,' ').replace(/Z/,' -0'))

Благодарю mplungjan за ответ.

3 голосов
/ 25 августа 2010

Вы также можете попробовать использовать Date.js - библиотеку с открытым исходным кодом для манипулирования датой JavaScript.

2 голосов
/ 25 августа 2010

Можете ли вы попробовать:

new Date(2001,0,1,12,0,0)

Это означает:

new Date(year,month,day,hour,minutes,seconds) 
...