Javascript Date.parse Bug, wenn durchgestrichen und beginnt mit Jahr

7

Ich suche eine Bestätigung, falls es sich um einen echten Dokumentations- und / oder Implementierungsfehler bei Javascripts Date.parse-Methode handelt.

Die Dokumente, auf die ich mich beziehe, sind Ссылка und sie sagen "If Wenn Sie keine Zeitzone angeben, wird die lokale Zeitzone angenommen. '

Aber der folgende Code zeigt, dass, obwohl keine Zeitzone angegeben ist, die lokale Zeit nicht angenommen wird (sondern vielmehr, dass mein Zeitzonen-Offset angewendet wird), wenn die an Date.parse übergebene Zeichenfolge beginnt mit der 4-stelligen Jahresdarstellung und ist durchgestrichen.

%Vor%

Es kann sogar andere Fälle geben, und ich bin mir sicher, dass ich nicht der Erste bin, der das entdeckt, wenn ich falsch liege. Ich bin sicher, dass es jenseits der Bestätigung auf detailliertere Informationen zu diesem Thema aufmerksam gemacht werden kann, wenn jemand entsprechende Links kennt.

Ich erlebe das in FF3, Chrome für Windows und natürlich nur, um etwas Besonderes zu sein. IE8 scheint überhaupt nicht in der Lage zu sein, die Konvertierung am 2011-10-04 durchzuführen: Ich bekomme nur einen leeren String rein meine Bewerbung

Vielen Dank im Voraus für weitere Einblicke oder Ressourcen.

    
George Jempty 05.10.2011, 16:23
quelle

2 Antworten

8

* Update: * Anscheinend gibt es hier verschiedene Standards:

  1. Das EMCAScript & lt; 5 Standard für Daten im Standard-IETF-Format , z. %Code%. Bei diesen Daten wird die lokale Zeitzone angenommen.

  2. In ECMAScript 5 ist auch eine eingeschränkte Version des ISO 8601-Standards zulässig, z. %Code%. Die Spezifikation scheint zu sagen (vielleicht nach ISO 8601?), Dass in diesem Fall die UTC-Zeitzone angenommen wird, wenn keine angegeben ist.

  3. Ich habe keine Spezifikation gefunden, die besagt, dass Sun Oct 03 2010 mit 2010-10-03 dates umgehen kann, aber mein Browser (Chrome 14) kann dies eindeutig und wahrscheinlich auch andere Browser. Dies scheint Standard 1 oben zu folgen, unter der Annahme der lokalen Zeitzone. Da es jedoch nicht in der Spezifikation enthalten ist, empfehle ich diese Version nicht zu verwenden , da es wahrscheinlich Browser-abhängig ist (und ich habe keine Ahnung, ob Date.parse zu einem anderen Datum führen würde, wenn Ich hatte ein europäisches Gebietsschema in meinem Browser eingestellt).

Bei den meisten Interpretern gibt es ein paar Probleme mit der nativen Funktion mm/dd/yyyy - ich hatte oft Zeitzonenprobleme wie die, die Sie beschreiben. Also verwende ich im Allgemeinen entweder eine Bibliothek wie Datejs oder schreibe meine eigenen Parsing-Funktionen. Das DateTime-Modul der SIMILE AJAX-Bibliothek ist ziemlich gut Beispielfunktion zum Analysieren von ISO-8601-Daten (was Sie als 10-03-2010 und eine optionale Zeitkomponente bezeichnen).

Wenn ich Daten festlege, verwende ich normalerweise Date.parse und dann die euroStyleDate -Funktionen, um die verschiedenen Datumselemente auf meine gewünschte Genauigkeit einzustellen. Es ist nicht perfekt, aber zumindest hast du es mit einer klaren Zeitzone zu tun.

    
nrabinowitz 05.10.2011, 16:40
quelle
12

Ich bin auch auf dieses Konzept gestoßen. Für jeden, der "Javascript-Dates Striche Schrägstriche" googelt, wie ich war, ist dies die klarste Demonstration, die mir einfällt, was hier vor sich geht.

Kurz gesagt, Schrägstriche bedeutet lokale Zeitzone und Striche bedeutet UTC. Andere Antworten haben Erklärungen, warum.

%Vor%     
Narpas 09.02.2012 17:42
quelle

Tags und Links