web-dev-qa-db-fra.com

Erreur de date Javascript non valide dans Internet Explorer

Ici, javascript relativement simple, je ne sais pas pourquoi IE me déteste (traitez les autres comme vous voulez être traité, je suppose).

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

Cela fonctionne dans Chrome et FF, mais IE génère "Date non valide".

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

34
dougmacklin

La chaîne donnée au constructeur de date doit être une date formatée RFC2822 ou ISO 8601 . Dans votre exemple, ce n'est pas le cas. Essayez ce qui suit:

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

ou en utilisant un constructeur alternate :

new Date(2012, 11, 2, 19, 30, 0)
45
Rich O'Kelly

Internet Explorer ne semble pas prendre en charge les millisecondes et les mois dans Numerical String. Essaye ça:

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

ou

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

J'avais le même problème avec Internet Explorer. Voici comment j'ai formaté la date et l'heure au début,

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 viens de l'enlever car c'était déjà une date UTC. Donc c'est juste,

return moment(date).format(formatString);

Cela a fonctionné pour moi dans tous les navigateurs, y comprisC'EST-À-DIRE.

2
Raghav Manikandan

Pour travailler dans IE, la date doit être au format approprié. J'ai corrigé le même problème en utilisant le format ci-dessous:

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

Regardez la date de référence de Mozilla.

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date

Je vous en prie!

1
nicoabie

Utilisation

var newDate = moment("2012, 11, 2 19:30:00:000").toDate();
alert(newDate);

Cela fonctionnera également dans IE.

0
Prafull