Der Browser bietet eine Möglichkeit, das Datum der letzten Änderung eines Dokuments zu bestimmen bei document.lastModified
. Diese Eigenschaft wird aus dem Header HTTP Last-Modified
ermittelt und als Zeichenfolge zurückgegeben.
Mein Ziel ist es, diese Eigenschaft in ein Javascript Date
-Objekt umzuwandeln. Momentan verwende ich
was die Zeichenfolge erfolgreich analysiert. Allerdings bin ich gespannt, ob dies browserübergreifend und über Ländergrenzen hinweg funktioniert.
Was mir sehr interessant ist, ist, dass document.lastModified
dasselbe Datum darstellt wie der angegebene Header HTTP Last-Modified
, aber die Strings nicht identisch sind. Es scheint mir, dass der Browser den Header Last-Modified
analysiert, ihn in seine interne Datumsdarstellung konvertiert und dann document.lastModified
auf einen darauf basierenden String setzt. Wenn dies der Fall ist, wird document.lastModified
wahrscheinlich so formatiert, dass es vom JavaScript Date
-Konstruktor analysiert werden kann, da beide wahrscheinlich dieselbe Gebietsschema- und Formatierungsregeln verwenden. Aber ich konnte das nicht sicher bestätigen.
Sie können nicht var anotherDateObject = new Date(Date.parse(document.lastModified));
Nur weil JavaScript eine Zeichenkette nicht in Date Object analysiert, bis sie irgendwelche Trennzeichen enthält (wie '/'
oder '-'
anders als empty space
im Datumsteil (Zeitteil hat kein Problem mit ':'
). Javascript kann ein gültiges parsen Datumszeichenfolge mit Leerzeichen als Trennzeichen, hier ist
Ich würde sagen, Sie müssen einen speziellen Fall für Webkit-basierte Browser geben, bis die HTML5-Spezifikation abgeschlossen ist.
Laut HTML5-Entwurf , document.lastModified
ist sehr klar Voraussetzung für die Umsetzung:
Das Attribut lastModified muss beim Abrufen das Datum und die Uhrzeit zurückgeben der letzten Änderung der Quelldatei des Dokuments im lokalen Benutzer Zeitzone im folgenden Format:
- Die Monatskomponente des Datums.
- Ein "/" (U + 002F) Zeichen.
- Die Tageskomponente des Datums.
- Ein "/" (U + 002F) Zeichen.
- Die Jahreskomponente des Datums.
- Ein U + 0020 SPACE-Zeichen.
- Die Stundenkomponente der Zeit.
- Ein ":" (U + 003A) Zeichen.
- Die Minutenkomponente der Zeit.
- Ein ":" (U + 003A) Zeichen.
- Die Sekundenkomponente der Zeit.
Kurz gesagt, das ist "MM/DD/YYYY hh:mm:ss"
in der lokalen Zeitzone des Benutzers . Was bedeutet, dass Webkit es falsch machen würde, wenn HTML5 mit derselben Anforderung abgeschlossen wäre.
Außerdem muss die Quelle des Änderungsdatums mit
übereinstimmenDas Datum und die Uhrzeit der letzten Änderung der Dokumentendatei müssen aus relevanten Merkmalen der verwendeten Netzwerkprotokolle abgeleitet werden, z. aus dem Wert des letzten HTTP-Headers des Dokuments oder aus Metadaten im Dateisystem für lokale Dateien. Wenn das Datum und die Uhrzeit der letzten Änderung nicht bekannt sind, muss das Attribut das aktuelle Datum und die aktuelle Uhrzeit im obigen Format zurückgeben.
Für jetzt, ich denke, Standard per se, kann jeder Browser tun, was er will, weil ich nichts über document.lastModified
in HTML4, XHTML, DOM 2 oder DOM 3 finden kann. Ich glaube, es ist nur in definiert HTML5.
Sobald jeder mit dem Standard übereinstimmt, würde es kein Problem geben, selbst wenn ein Browser "MM/DD/YYYY hh:mm:ss"
nicht parsen kann. Sie können ihn immer als ISO 8601 rekonstruieren, was im ECMAScript-Standard akzeptiert wird. Aber ich denke, dass aktuelle Hauptbrowser das Format korrekt als lokale Zeit analysieren können, was auch in ECMAScript erwartet und Standard ist.
Soweit ich sehen kann, unterstützt alle gängigen Browser diese Eigenschaft. Der gespeicherte Wert ist in Ortszeit im Format MM/dd/yyyy HH:mm:ss
.
Ich denke, dass Sie diese Eigenschaft für alle Browser und Ländereinstellungen verwenden können.
Vis-á-vis Livibetters Kommentar: "Momentan denke ich, Standard per se, jeder Browser kann tun, was er will, weil ich nichts über document.lastModified in HTML4, XHTML, DOM 2 oder DOM 3. Ich glaube, es ist nur in HTML5 "
definiertIch glaube, "document.lastModified" gibt es schon seit einiger Zeit. Ich habe es seit ein paar Jahren auf einer Seite (vor HTML5). Nicht dass es wirklich wichtig ist. Wenn jemand interessiert (unter Windows XP SP3) die Browser, die ich halte, um Seiten zu überprüfen:
· Chrome 34 besteht immer noch darauf, die Zeit in UTC zurückzugeben (aber keine Ortszeit)
· Firefox 28 ignoriert nur die Anweisung "javascript: alert (document.lastModified)" !! : D
· IE8 gab die Ortszeit zurück (wie andere darauf hingewiesen haben)
· Oper 12.16 hat die Ortszeit zurückgegeben
· Safari 5.1.7 hat UTC-Zeit zurückgegeben
Zumindest bekommen sie das Datum richtig; Sie alle kehrten am 17.11.09 auf meiner Homepage zurück (außer Firefox, der einfach ignoriert wurde)! LOL
Es wäre schön, wenn Referenzquellen, wie W3Schools ( Ссылка ), einige Formulierungen in diesen Zeilen hinzufügen würden so wissen die Leute, was zu erwarten ist, wenn die Ergebnisse funky sind.
UPDATE: Wenn Sie Extras | aktivieren Webentwickler | DOM Inspector, Firefox 28 führt glücklicherweise "javascript: alert (document.lastModified)" aus und gibt die Ortszeit zurück! Was für ein Mischmasch. LOL
Tags und Links javascript date browser