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>
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>
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!