2010-08-25 5 views
10

Je travaille avec des dates dans un flux RSS, mais je le trouve des résultats différents lorsque vous utilisez le code ci-dessous dans IE, Chrome et Firefox:problème avec les formats de date en JavaScript avec différents navigateurs

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

Firefox est satisfait cela, mais Chrome et IE renvoient une date invalide.

Je pensais que je vais essayer de remplacer le T et Z comme suit:

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

Cette fois Chrome est satisfait, mais Firefox et IE Date de retour non valide.

Des idées ce que je devrais faire pour obtenir un objet de date dans tous les navigateurs avec ce format ?!

Un grand merci, Tim

Répondre

23

Cela fonctionne dans tous les navigateurs sur ma boîte - essayez dans la console:

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

si

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

IE8, FF3.6, Safari4, Chrome

+1

Vous avez raison, cela fonctionne, et c'est une meilleure solution que la mienne. – NicolasT

+0

Merci beaucoup! Testé et travaillant pour moi dans IE, FF, Chrome et Opera! – TimS

+0

Comment est-ce que je fais ce travail sur FF avec timezone? Parce que cette 'nouvelle date ('2001-01-01T12: 00: 00 + 1000'.replace (/ \ -/g,' \/'). Replace (/ [T | Z]/g,' '))' return Date invalide dans FF, mais fonctionne dans IE/Chrome –

1

Pouvez-vous essayer:

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

Cela signifie:

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

Vous voulez dire new Date (2001,0,1,12,0,0) depuis des mois JS commencent par 0 – mplungjan

+0

Je vais modifier, vous avez raison – NicolasT

+0

Soyez prudent avec les principaux 0s. 08 et 09 sont des nombres octaux invalides – mplungjan

3

Vous pouvez également essayer d'utiliser Date.js - open source javascript bibliothèque de manipulation de date.

+0

Excellente suggestion! Merci – TimS

+0

Aussi momentjs (www.momentjs.com) martèle les différences de navigateur. – Quango

3

Cela fonctionne sur tous les 5 principaux navigateurs et fait tous les navigateurs de reconnaître le temps que GMT/UTC plutôt que l'heure locale (le suffixe Z signifie que le temps est UTC):

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

Je remercie mplungjan pour sa réponse.

Questions connexes