Aktualisiere das letzte Änderungsdatum des aktuellen Dokuments im javascript Date-Objekt

10

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

%Vor%

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.

    
Jim Garrison 16.11.2012, 01:16
quelle

6 Antworten

3

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

%Vor%     
Sami 16.11.2012 04:49
quelle
2

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:

     
  1. Die Monatskomponente des Datums.
  2.   
  3. Ein "/" (U + 002F) Zeichen.
  4.   
  5. Die Tageskomponente des Datums.
  6.   
  7. Ein "/" (U + 002F) Zeichen.
  8.   
  9. Die Jahreskomponente des Datums.
  10.   
  11. Ein U + 0020 SPACE-Zeichen.
  12.   
  13. Die Stundenkomponente der Zeit.
  14.   
  15. Ein ":" (U + 003A) Zeichen.
  16.   
  17. Die Minutenkomponente der Zeit.
  18.   
  19. Ein ":" (U + 003A) Zeichen.
  20.   
  21. Die Sekundenkomponente der Zeit.
  22.   

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

übereinstimmen
  

Das 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.

    
livibetter 23.11.2012 20:57
quelle
2

Versuchen Sie das? "

%Vor%

'

    
Jérémy Lal 09.01.2015 17:36
quelle
1

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.

    
Arun P Johny 16.11.2012 03:46
quelle
1

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 "

definiert

Ich 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

    
jim 24.04.2014 20:02
quelle
0

Hier ist ein Beispiel:

%Vor% %Vor% %Vor%
    
A.K 19.02.2015 11:34
quelle

Tags und Links