![]() | ![]() ![]() ![]() ![]() ![]() |
Beschreibung
Es wird das aktuelle Datum und die Uhrzeit ermittelt und angezeigt.
Außerdem wird gemessen, wie lange der Leser auf dieser Seite bleibt;
beim Verlassen der Seite wird die Zeitdauer angezeigt (zum Ausprobieren reicht
es, wenn Sie die Funktion "Ansicht/Erneut laden" Ihres Browsers aufrufen).
Quelltext
<body onLoad="odat=new Date();" onUnload="ndat=new Date();
var delta=Math.round((ndat.getTime() - odat.getTime())/1000.);
alert('Sie waren '+delta+' Sekunden auf dieser Seite');" >
...
<script language="JavaScript">
<!--
var date=new Date();
var dd=date.getDate();
var mm=date.getMonth() + 1;
var yy=date.getYear();
var HH=date.getHours();
var MM=date.getMinutes();
if(dd<10)dd="0"+dd;
if(mm<10)mm="0"+mm;
if(HH<10)HH="0"+HH;
if(MM<10)MM="0"+MM;
document.write(dd+"."+mm+"."+yy+" "+HH+":"+MM);
//-->
</script>
Erläuterung
Zum Anzeigen des aktuellen Datums muß zunächst eine Instanz
des Date-Objektes erzeugt werden; dann können die einzelnen
Bestandteile von Datum und Uhrzeit ausgelesen werden. Aus Gründen
der schöneren Darstellungen werden einstellige Zahlen mit einer
führenden Null zu einer zweistelligen Zeichenkette aufgefüllt.
Zum Messen der Zeit, die der Leser diese Seite betrachtet, werden im
<body>-tag die Ereignisse onLoad() und onUnload() behandelt.
Bei Laden wird lediglich eine neue Instanz des Datums angelegt. Beim Entladen
wird ebenfalls das aktuelle Datum bestimmt und die Differenzzeit zum
Ladedatum berechnet. Da die interne Zeitrechnung mit einer Genauigkeit von einer
Millisekunde erfolgt, wird das Resultat mit 1000 dividiert. Auf die in diesem
Beispiel verwendete Rundungsfunktion Math.round wird auf
Seite 15 eingegangen.
Die hier angewandte Vorgehensweise, die verschiedenen Aktionen, die beim Laden
und Entladen der Seite erfolgen sollen, alle im <body>-tag unterzubringen,
ist nicht sehr übersichtlich. Normalerweise würde man zumindest
für das Ereignis beim Verlassen der Seite eine function verwenden. Funktionen
werden auf Seite 07 eingeführt.
Sie können auch das letzte Änderungsdatum des aktuellen Dokuments abfragen
und ausgeben. Das erforderliche Date-Objekt erzeugen Sie mit
var date=Date(document.lastModified);
Aber Vorsicht: das funktioniert zwar gut lokal auf Ihrem PC; wenn die
Seite aber auf einem Unix-Server liegt und von einem PC abgerufen wird,
kann oben genannte Zeile zum Browserabsturz führen !
Wollen Sie es wagen ?
Übungsaufgabe
Berechnen Sie, wieviel Tage es noch bis Weihnachten sind.
[Lösung]
Referenz
[new]
[Date-Objekt]
new Date() | erzeugt ein Date-Objekt, das das zum Zeitpunkt der Erzeugung aktuelle Datum/Uhrzeit enthält. |
new Date("month day, year hours:minutes:seconds") | englische Schreibweise für das Datum (Zeichenkette) , wird z.B. von document.lastModified geliefert |
new Date(year, month, day) | numerische Schreibweise des Datums, aber Achtung: als "month" ist der Monat seit Januar anzugeben, für Januar also eine Null! Die Uhrzeit wird bei dieser Schreibweise auf 00:00:00 gesetzt. |
new Date(year, month, day, hours, minutes, seconds) | numerische Schreibweise von Datum und Uhrzeit. |
Das Date-Objekt verfügt über eine Reihe von Methoden zum Auslesen (get) und Setzen (set) der verschiedenen Bestandteile des Datums:
getDate() | Tag des Monats [1..31] | setDate() |
getDay() | Wochentag, 0=Sonntag, 6=Samstag | setDay() |
getHours() | Stunde [0..23] | setHours() |
getMinutes() | Minute [0..59] | setMinutes() |
getMonth() | Monat seit Januar, 0=Januar, 11=Dezember | setMonth() |
getSeconds() | Sekunde [0..59] | setSeconds() |
getTime() | Millisekunden seit dem 01.01.70 00:00 Uhr GMT | setTime() tr> |
getYear() | Jahr seit 1900, z.B. 97=1997, 101=2001 Achtung: Jahr vor 1970 ist nicht möglich! | setYear() |
toGMTString() | Zeichenkette im GMT-Format (Greenwich Mean Time) z.B. "Sun, 16 Mar 1997 17:26:20 GMT" | |
toLocaleString() | Zeichenkette der lokalen Zeit |
Wenn Sie z.B. ein Date-Objekt für den morgigen Tag erzeugen wollen,
schreiben Sie:
date=new Date();
date.setDate(date.getDate()+1);
Das funktioniert auch am letzten Tag des Monats: wenn das Datum z.B. auf den
32. Januar gesetzt wird, korrigiert JavaScript das automatisch auf den
1. Februar.
Die folgenden Methoden des date-Objektes beziehen sich nicht auf eine einzelen Instanz des Objektes :
getTimezoneOffset() | liefert die Differenz der lokalen Zeit zu GMT in Minuten. Für Deutschland also je nach Sommer- oder Winterzeit 120 oder 60 Minuten. |
parse("zeit") | liefert die Millisekunden seit 01.01.70 00:00 lokale Zeit. zeit ist eine Zeichenkette im GMT-Format (z.B. "Mon, 25 Dec 1995 13:30:00 GMT"). |
UTC(jahr, mon, tag, [,std [,min [,sec]]]) | liefert die Millisekunden seit 01.01.70 00:00 GMT. jahr Jahr seit 1990 mon Monat seit Januar tag Tag des Monats std Stunde min Minute sec Sekunde |
Insgesamt kann von der Verwendung der letzten 3 Methoden nur abgeraten werden:
Der von mir eingesetzte Netscape 2.01 liefert falsche Ergebnisse für
Date.UTC sowie Date.getTimezoneOffset (Netscape 3.0 liefert richtige Werte);
MSIE 3.0 liefert ein falsches Vorzeichen für Date.getTimezoneOffset.
Auf der nächsten Seite erstellen wir einen Monatskalender. |
![]() ![]() ![]() |