IE Date Constructor Returns NaN: Eine browserübergreifende Lösung zur Datumskonvertierung
Im Bereich der JavaScript-Datumsmanipulation tritt ein besonderes Problem auf Internet Explorer (IE), wo sich der Datumskonstruktor anders verhält als seine Kollegen in Firefox und Chrome. Beim Versuch, ein neues Datumsobjekt aus einer Zeichenfolge zu erstellen, gibt IE NaN (Not a Number) zurück, während die anderen Browser gültige Datumsangaben erzeugen.
Um diese Diskrepanz zu verstehen, müssen wir uns mit den zugrunde liegenden verwendeten Parsermechanismen befassen von jedem Browser. Im IE hat der Datumskonstruktor Probleme mit bestimmten Datumsformaten, insbesondere solchen, die Kommas als Trennzeichen enthalten.
Hier ist ein konkretes Beispiel, auf das ein Entwickler gestoßen ist, der versucht, einen Kalender zu erstellen:
<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>
In Bei dieser Funktion stellt der dateText-Parameter den Montag der aktuellen Woche dar, formatiert als „m, d, Y“ (z. B. „02, 01, 2010“). Während dieses Format in Firefox und Chrome nahtlos funktioniert, stellt es im IE eine Herausforderung dar, da die durch Kommas getrennten Werte nicht korrekt analysiert werden können.
Um dieses Problem zu lösen, können wir ein konsistenteres und browserübergreifend kompatibleres Format verwenden Datumsformat. Ein solcher Ansatz besteht darin, die durch Kommas getrennte Zeichenfolge in ein Array diskreter Werte umzuwandeln, die dann zum Erstellen eines gültigen Datumsobjekts verwendet werden können:
<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>
In diesem Beispiel stellt die Variable dateStr das Datum dar und Uhrzeit, abgerufen aus einer MySQL-Datenbank im Format „JJJJ-MM-TT HH:MM:SS“. Indem wir diese Zeichenfolge in ihre Bestandteile aufteilen und sie einzeln an den Date-Konstruktor übergeben, stellen wir sicher, dass die Konvertierung in allen Browsern konsistent durchgeführt wird.
Diese Lösung behebt die browserübergreifende Datumsanalysediskrepanz und ermöglicht die Funktion „buildWeek“. funktionieren nahtlos in allen gängigen Browsern, einschließlich Internet Explorer.
Das obige ist der detaillierte Inhalt vonVerursacht der Datumskonstruktor des IE NaN-Fehler bei browserübergreifenden Datumskonvertierungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!