2012-10-26 2 views
19

Relativement simple javascript ici, je ne sais pas pourquoi IE me déteste (traiter les autres comment vous voulez être traité je suppose).Javascript Invalid Date Erreur dans Internet Explorer

var newDate = new Date("2012, 11, 2 19:30:00:000"); 
alert(newDate); 

Cela fonctionne dans Chrome et FF, mais IE sorties "Date non valide"

Fiddle moi ce: http://jsfiddle.net/k6yD6/

+1

Je reçois effectivement une date invalide dans Firefox (dernière version, 16.0.1). –

+2

Assurez-vous simplement que vous utilisez un format correctement pris en charge. Cette question a été posée à plusieurs reprises avant, http://stackoverflow.com/questions/3020508/ie-javascript-date-parsing-error –

+1

pour IE son dateObj = nouvelle date (année, mois, date [, heures [, minutes [, secondes [, ms]]])) – Amitd

Répondre

30

La chaîne donnée au constructeur de date should be an RFC2822 or ISO 8601 formatted date. Dans votre exemple, ce n'est pas le cas. Effectuez les opérations suivantes:

new Date("2012-11-02T19:30:00.000Z"); 

ou en utilisant un alternate constructor:

new Date(2012, 11, 2, 19, 30, 0) 
+0

merci, le constructeur de remplacement fonctionne cependant le premier que vous avez énuméré ne semble pas dans un navigateur – dougmacklin

+0

@DougieBear Réponse mise à jour - J'avais manqué un zéro requis avant le jour –

+0

nouvelle Date ("2012-11-02T19 : 30: 00.000Z "); Les millisecondes peuvent être omises, mais si elles sont incluses, elles doivent être précédées d'un point et non d'un deux-points. – kennebec

7

IE ne semble pas soutenir milliseconde et mois dans la chaîne numérique. Essayez ceci:

new Date("November 2, 2012 19:30:00"); 

ou

new Date(year, month, day, hours, minutes, seconds, milliseconds) 
+1

'new Date (" November 2, 2012 19:30:00 ");' - Cela m'a sauvé beaucoup de douleur. – dexterb

1

Pour travailler dans IE, date doit être au format approprié. Je fixe ce même problème en utilisant le format ci-dessous:

var tDate = new Date('2011'+"-"+'01'+"-"+'01'); //Year-Month-day 
+0

Lorsque j'ai passé ce format année-mois-jour dans mon code, cela a résolu le problème ... je dois vous donner un 1.Cependant, je n'avais pas besoin de la nouvelle date, juste changer le format comme une chaîne et la date est apparue correctement sur le côté du serveur via IE 11. – Clarence

-1

j'avais le même problème avec Internet Explorer. Voici comment je le formatage de la date et l'heure au départ,

function formatDateTime(date, formatString = 'MM/DD/YYYY hh:mm A') { 
    return moment(new Date(date)).format(formatString); 
} 

Le problème était avec new Date(). Je l'ai juste enlevé car c'était déjà une date UTC. Il est donc juste,

return moment(date).format(formatString); 

Cela a fonctionné pour moi dans tous les navigateurs, y compris IE.

+0

OP ne mentionne pas l'utilisation de la bibliothèque moment.js. – user2954463

Questions connexes