2010-08-25 3 views
10

Я работаю с датами в RSS-канал, но я найти различные результаты при использовании кода ниже в IE, Chrome и Firefox:Проблема с форматов даты в JavaScript с различными браузерами

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

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

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

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

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

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

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

ответ

23

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

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

+1

Вы правы, это работает, и это лучшее решение, чем мое. – NicolasT

+0

Большое спасибо! Протестировано и работает для меня в IE, FF, Chrome и Opera! – TimS

+0

Как сделать эту работу над FF с часовым поясом? Потому что эта новая дата ('2001-01-01T12: 00: 00 + 1000'.replace (/ \ -/g,' \/') заменяет (/ [T | Z]/g,' ')) ' return Недействительная дата в FF, но работает в IE/Chrome –

1

Вы можете попробовать:

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

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

new Date(year,month,day,hour,minutes,seconds) 
+3

Вы имеете в виду новый Дата (2001,0,1,12,0,0) начиная с JS месяцев начинаются с 0 – mplungjan

+0

Я буду править, вы правы – NicolasT

+0

Будьте осторожны с ведущими 0s. 08 и 09 являются недопустимыми восьмеричными номерами – mplungjan

3

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

+0

Отличное предложение! Спасибо – TimS

+0

Также momentjs (www.momentjs.com) забивает отклонения браузера. – Quango

3

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

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

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