Problème du constructeur de dates IE : NaN par rapport aux fonctionnalités d'autres navigateurs
Au sein d'un projet impliquant le développement d'un calendrier JavaScript, des écarts sont apparus dans la gestion des dates entre Internet Explorer (IE) et les navigateurs comme Firefox et Chrome. Plus précisément, les fonctions de date d'IE entraînaient des valeurs NaN (Not a Number), alors qu'elles fonctionnaient correctement dans les autres navigateurs.
Après enquête, il est devenu clair que la cause première était liée au format de date utilisé. La fonction en question, buildWeek(), destinée à générer des dates d'en-tête pour une semaine civile basée sur une date du lundi fournie au format « m, d, Y », par exemple « 02, 01, 2010 ». Cependant, dans IE, ce format n'était pas reconnu correctement, ce qui entraînait le problème NaN.
Pour résoudre cet écart, une approche différente a été adoptée. Au lieu de s'appuyer sur le format donné, la chaîne de date a été divisée en ses composants (date et heure) à l'aide de split(" "). Par la suite, le composant date a été divisé en ses parties constitutives (année, mois, jour) à l'aide de split("-"), et le composant temps a été divisé en ses parties (heures, minutes, secondes) à l'aide de split(":") .
Une instance de Date a ensuite été construite en utilisant ces valeurs analysées. Cette méthode s'est avérée compatible avec tous les navigateurs, garantissant une gestion cohérente des dates dans IE, Firefox et Chrome.
var dateStr = "2011-08-03 09:15:11"; //returned from mysql timestamp/datetime field var a = dateStr.split(" "); var d = a[0].split("-"); var t = a[1].split(":"); var date = new Date(d[0], (d[1] - 1), d[2], t[0], t[1], t[2]);
En adoptant cette approche, les erreurs NaN dans IE ont été éliminées avec succès, permettant ainsi une gestion cohérente des dates dans différents navigateurs.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!