[Beschreibung] [Quelltext] [Erläuterung] [Übung] [Referenz]

Arbeiten mit Datum und Uhrzeit

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

Die Objekte, die wir bisher kennengelernt haben (document, location), werden von JavaScript automatisch erzeugt, wenn eine Seite aufgerufen wird. Anders, wenn wir z.B. mit dem Datum arbeiten wollen: Dann müssen wir selber eine Instanz des Objekts erzeugen. Hierzu dient das Schlüsselwort new.

Date-Objekt

Zur Erzeugung einer neuen Instanz des Date-Objektes gibt es vier verschiedene Möglichkeiten:
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.

Die Zeitrechnung innerhalb von JavaScript beginnt mit dem 01.01.70,
mit Daten vor diesem Zeitpunkt kann nicht gearbeitet werden!

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 GMTsetTime()
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
Die beiden letzten Methoden lassen sich für ein bestehendes date-Objekt mit der setTime-Methode kombinieren, z.B.:
dat1.setTime(Date.UTC(95, 11, 25))
setzt das Objekt "dat1" auf den 25.12.1995 .

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.

home
Erstellt von © Uwe Brinkmann - bingo e.V. - Stand 06.05.98