19.4 Datums- und Uhrzeit-Funktionen
Für viele Anwendungen ist es wichtig, mit Datum und Uhrzeit zu operieren. Erinnern Sie sich beispielsweise noch an die Jahr-2000-Countdowns auf jeder zweiten Website? Die meisten von ihnen wurden damals in JavaScript realisiert.
Der Schlüssel zu Datum und Uhrzeit in JavaScript ist die Klasse Date. Sie definiert die Eigenschaften und Methoden für Datumsobjekte. Ein Datumsobjekt kapselt eine Zeitangabe sowie eine Reihe von Methoden, um diverse Aspekte von Datum und Uhrzeit zu extrahieren. Wie Sie sich bei einer Sprache aus dem erweiterten Unix-Umfeld sicher denken können, werden Zeitangaben auch in JavaScript POSIX-konform als verstrichene Zeitspanne seit dem idealisierten Unix-Erfindungsdatum EPOCH (01.01.1970, 00:00 Uhr UTC) gespeichert.
Ein Datumsobjekt wird über den folgenden Konstruktoraufruf erstellt:
RefVar = new Date();
In RefVar wird ein Verweis auf ein neu erstelltes Date-Objekt gespeichert, das die aktuelle Systemzeit enthält.
Hier ein Beispiel:
var jetzt = new Date();
// in 'jetzt' befindet sich nun die akt. Systemzeit
Alternativ können Sie dem Konstruktor auch explizit eine Datums- und Uhrzeitangabe übergeben, um einen bestimmten Zeitpunkt zu codieren. Die Syntax für diese Zeitangabe ist folgende:
RefVar = new Date("Monat Tag, Jahr Std:Min:Sek");
Hier ein Beispiel:
var gestern = new Date("06 10, 2011 21:31:00");
Eine weitere mögliche Schreibweise verwendet statt des Strings die einzelnen Zeitangaben als Liste numerischer Argumente:
RefVar = new Date
(Jahr, Monat, Tag, Stunden, Minuten, Sekunden);
Konkretes Beispiel:
var letztesJahr = new Date (2011, 6, 10, 21, 31, 0);
Wenn Sie keine konkrete Uhrzeit benötigen, können Sie die drei letzten Parameter auch weglassen; in diesem Fall wird einfach 00:00 Uhr eingetragen.
19.4.1 Datums- und Uhrzeit-Methoden
Nachdem das Datumsobjekt erstellt wurde, besteht die Möglichkeit, mithilfe einer Reihe von Methoden die einzelnen Felder des Datums und der Uhrzeit zu extrahieren (im Folgenden wird wieder das Beispiel jetzt für das Datumsobjekt verwendet):
- jetzt.getYear() gibt das »kurze« (zweistellige) Jahr zurück. Die Verwendung dieser Methode ist nicht empfehlenswert: Beim Internet Explorer gibt sie für die Jahre bis 1999 die Werte 00 bis 99 zurück und für die Jahre danach die vierstellige Jahresangabe 2000 und so weiter. Bei Mozilla-Browsern geht es dagegen einfach weiter: 1999 ergibt 99, 2000 ergibt 100, 2001 führt zu dem Wert 101 und so weiter.
- jetzt.getFullYear() gibt das vierstellige (und überall identische) Jahr zurück.
- jetzt.getMonth() ist der numerische Monat. Er zählt allerdings anders als im normalen Kalender ab 0 (Januar hat den Wert 0, Februar die 1, und es geht weiter bis zum Dezember mit dem Wert 11). Auf diese Weise kann der Wert leicht auf ein Array mit Monatsnamen angewandt werden.
- jetzt.getDate() liefert den Tag im Monat von 1 bis 31.
- jetzt.getDay() gibt den Wochentag in numerischer Form zurück: 0 steht für Sonntag, 1 für Montag und schließlich 6 für Samstag.
- jetzt.getHours() gibt die Stunde zwischen 0 und 23 zurück.
- jetzt.getMinutes() liefert die Minute zwischen 0 und 59.
- jetzt.getSeconds() gibt die Sekunde zwischen 0 und 59 zurück.
Jede dieser Methoden besitzt auch noch eine Variante mit eingeschobenem UTC, beispielsweise getUTCHours() oder getUTCSeconds(). Während die normalen Versionen die Bestandteile von Datum und Uhrzeit in der Ortszeit zurückgeben, liefern die UTC-Varianten die Bestandteile der ortsunabhängigen Universalzeit (GMT ohne Sommerzeit).
Zu jeder get*-Methode gibt es auch eine entsprechende set*-Methode[Anm.: Aus naheliegenden Gründen gibt es keine setDay()-Methode, schließlich hängt der Wochentag vom Datum ab.], mit deren Hilfe Sie die einzelnen im Date-Objekt gespeicherten Werte nachträglich ändern können. Selbstverständlich ändert dies nicht die tatsächliche Systemzeit.
Einige weitere Methoden ermöglichen die Ausgabe von Datum und Uhrzeit als vollständigen String:
- jetzt.toString() gibt Datum und Uhrzeit als String zurück.
- jetzt.toTimeString() liefert nur die Uhrzeit als String.
- jetzt.toUTCString() gibt UTC-Datum und UTC-Uhrzeit als String zurück.
- jetzt.toUTCTimeString() gibt nur die UTC-Uhrzeit als String zurück.
- jetzt.toLocaleString() gibt Datum und Uhrzeit in der Schreibweise als String zurück, die der aktuellen Ländereinstellung des Browsers/Betriebssystems entspricht.
- jetzt.toLocaleTimeString() liefert nur die Uhrzeit in lokaler Schreibweise.
19.4.2 Timeout – die JavaScript-»Stoppuhr«
Die window-Methode setTimeout() ermöglicht es, einzustellen, dass bestimmte Anweisungen nach Ablauf einer festgelegten Zeitspanne ausgeführt werden sollen. Auf diese Weise lässt sich beispielsweise eine automatisch laufende Uhr in einem Textfeld realisieren.
Die allgemeine Form sieht so aus:
Der Anw_String enthält die auszuführenden Anweisungen in Form eines Strings. Millisec gibt die Wartezeit in Millisekunden an, nach deren Verstreichen die Anweisungen ausgeführt werden sollen.
setTimeout() gibt eine Referenz auf das Timeout zurück, das Sie einer Variablen zuweisen können. Auf diese Weise können Sie es mithilfe der Methode clearTimeout() bei Bedarf vorzeitig abschalten.
In diesem kleinen Beispiel wird ein Timeout gesetzt, das nach einer Sekunde die Funktion wecken() aufruft:
var stoppuhr = setTimeout("wecken();", 1000);
Falls Sie es sich anders überlegen und den einprogrammierten Aufruf von wecken() wieder löschen möchten, geht das folgendermaßen:
clearTimeout(stoppuhr);
Mit setTimeout() und clearTimeout() sind die Methoden setInterval() und clearInterval() eng verwandt. Die Methode setInterval() weist dieselbe Syntax auf wie setTimeout(). Allerdings ruft sie die Anweisungen im String nicht nur einmal nach Verstreichen der Wartezeit auf, sondern in regelmäßigen Abständen, die durch die Zeitangabe geregelt werden. Entsprechend ist clearInterval() für das Löschen einer solchen automatischen Wiederholung zuständig.
Ihr Kommentar
Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.