Heim > Web-Frontend > js-Tutorial > Hauptteil

Verursacht der Datumskonstruktor des IE NaN-Fehler bei browserübergreifenden Datumskonvertierungen?

Linda Hamilton
Freigeben: 2024-10-20 13:37:02
Original
110 Leute haben es durchsucht

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

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!