Maison > interface Web > js tutoriel > Le constructeur de date d'IE provoque-t-il des erreurs NaN dans les conversions de dates entre navigateurs ?

Le constructeur de date d'IE provoque-t-il des erreurs NaN dans les conversions de dates entre navigateurs ?

Linda Hamilton
Libérer: 2024-10-20 13:37:02
original
206 Les gens l'ont consulté

Does IE's Date Constructor Cause NaN Errors in Cross-Browser Date Conversions?

Le constructeur de date IE renvoie NaN : une solution de conversion de date entre navigateurs

Dans le domaine de la manipulation de date JavaScript, un problème particulier se pose dans Internet Explorer (IE) où le constructeur Date se comporte différemment de ses pairs dans Firefox et Chrome. Lorsque vous tentez de créer un nouvel objet Date à partir d'une chaîne, IE renvoie NaN (Not a Number), tandis que les autres navigateurs produisent des dates valides.

Pour comprendre cet écart, nous devons approfondir les mécanismes d'analyse sous-jacents utilisés. par chaque navigateur. Dans IE, le constructeur Date a des difficultés avec certains formats de date, en particulier ceux qui incluent des virgules comme séparateurs.

Voici un exemple spécifique rencontré par un développeur tentant de créer un calendrier :

<code class="javascript">function buildWeek(dateText){
    var headerDates='';
    var newDate = new Date(dateText);

    for(var d=0;d<7;d++){
        headerDates += '<th>' + newDate + '</th>';
        newDate.setDate(newDate.getDate()+1);
    }                       

    jQuery('div#headerDates').html('<table><tr>'+headerDates+'</tr></table>');
}</code>
Copier après la connexion

Dans cette fonction, le paramètre dateText représente le lundi de la semaine en cours, au format « m, d, Y » (par exemple, « 02, 01, 2010 »). Bien que ce format fonctionne parfaitement dans Firefox et Chrome, il pose un problème dans IE, qui ne parvient pas à analyser correctement les valeurs séparées par des virgules.

Pour résoudre ce problème, nous pouvons utiliser un format plus cohérent et compatible avec tous les navigateurs. format de date. Une de ces approches consiste à convertir la chaîne séparée par des virgules en un tableau de valeurs discrètes, qui peuvent ensuite être utilisées pour construire un objet Date valide :

<code class="javascript">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]);</code>
Copier après la connexion

Dans cet exemple, la variable dateStr représente la date et heure récupérée d'une base de données MySQL au format 'AAAA-MM-JJ HH:MM:SS'. En divisant cette chaîne en ses composants et en les transmettant individuellement au constructeur Date, nous garantissons que la conversion est gérée de manière cohérente dans tous les navigateurs.

Cette solution résout l'écart d'analyse de date entre navigateurs et permet à la fonction buildWeek de fonctionne de manière transparente dans tous les principaux navigateurs, y compris Internet Explorer.

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!

source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal