Videos eBook Forum Kontakt

jetzt Videos kaufen
zum Lernen von HTML,
CSS und Webdesign

Jetzt das HTML-Seminar bestellen als
Video-Tutorial mit über 210 Videos:
von den Grundlagen bis zur fertigen Website
Video-Kurs HTML5, CSS & Webdesign

Video-Kurs bestellen HTML5, CSS & Webdesign
Video-Kurs bestellen HTML5, CSS & Webdesign

Das Datums-Objekt in JavaScript: date()

Sehr oft muss in Programmen mit einem Datum bzw. Zeiten gearbeitet werden. Hierzu bietet uns JavaScript das Datums-Objekt (Date-Object). Dieses hat ein paar Besonderheiten, die im folgenden Tutorial gezeigt werden.

Zum Testen im ersten Teil ist wieder die Konsole des Browsers geschickt. Hier können wir direkt JavaScript-Befehle eingeben und sehen das Ergebnis. Geben wir also in der Konsole ein:

Date()

Wichtig ist, dass der JavaScript-Befehl Date() groß geschrieben ist!

Als Ergebnis erhalten wir eine lange Rückgabe von dem aktuellen Zeitpunkt. Im folgendem nur als Beispiel:

Tue Jan 08 2019 13:39:52 GMT+0100 (Mitteleuropäische Normalzeit)

Was haben wir zurückbekommen? Wenn wir an jeder Leerstelle es zerteilen, wird es klarer:

Tue Tag in englischer 3-Buchstabenschreibweise, also im Beispiel Dienstag
Jan Monat in englischer 3-Buchstabenschreibweise, also Januar
08 Tag mit führender Null
13.39:52 die Uhrzeit mit Stunden:Minuten:Sekunden
GMT Welche Zeitzone, hier „Greenwich Mean Time“
0100 Die Zeitverschiebung – in Deutschland ist im Winterhalbjahr 1 Stunde später als die koordinierte Weltzeit (Kürzel UTC, damit man das auch mal gesehen hat). (Mitteleuropäische Normalzeit)

Wir erhalten exakt das Datum und die Uhrzeit an dem Zeitpunkt, an dem wir diesen Befehl ausführen. Oft wird dieser Wert einer Variablen zugewiesen – allerdings ist der Wert dann fix und die Zeit und das Datum bleibt „stehen“.

Es gibt noch weitere Möglichkeiten ein neues Datums-Objekt zu erstellen. Als Überblick alle 4 Varianten und folgend dann die dazugehörigen Erklärungen:

new Date()
new Date(Jahr, Monat, Tag, Stunde, Minute, Sekunde, Millisekunde)
new Date(Millisekunde)
new Date(date string)

Wollen wir also selber ein Datum angeben, hilft uns die erste Variante nicht wirklich weiter. In der zweiten Variante können wir selber ein Datum festlegen. Hier gibt es ein paar Fallstricke!

Schauen wir uns den Aufbau genauer an:

new Date(Jahr, Monat, Tag, Stunde, Minute, Sekunde, Millisekunde)

Wir müssen nicht alle Werte eingeben. Wir geben nur den ersten Wert ein – die Jahreszahl 2019.

new Date(2019)

Wenn wir nun in der Konsole einfach nur das Jahr, sprich den ersten Wert, mitgeben erhalten wir folgendes Ergebnis in der Ausgabe:

Thu Jan 01 1970 01:00:02 GMT+0100 (Mitteleuropäische Normalzeit)

Was ist passiert? Wir haben nun versehentlich die dritte Form der Eingabe gemacht, sprich wir haben Millisekunden mitgegeben, die wir als Jahreszahl dachten. Ein Datum benötigt mindestens als Angabe das Jahr und den Monat.

Da alle Computer bei 1.1.1970 um 0 Uhr anfangen zu zählen, wird unserer vorherigen Angabe 2019 Millisekunden zum 1.1.1970 aufaddiert. So kommt der ausgegebene Wert zustande. Die 1 Uhr kommen zustande, weil wir mit der Mitteleuropäische Normalzeit arbeiten, sprich der Uhrzeit 1 Stunde hinzuaddiert wird.

WICHTIG also bei der Nutzung von der Eingabe von Date(Jahr, Monat, Tag) ist, dass wir neben der Jahreszahl mindestens den Monat mitgeben. Und da kommen wir gleich zum nächsten Fallstrick.

Wir wollen nun den ersten April eingeben. Machen wir in der Konsole nun folgende Eingabe:

Date(2019, 4)

Wir erhalten als Ergebnis:

Wed May 01 2019 00:00:00 GMT+0200 (Mitteleuropäische Sommerzeit)

April, April – der Computer nimmt uns mächtig auf den Arm und zeigt den Mai an. Warum?

Eigentlich würde man mit gesundem Menschenverstand annehmen, dass JavaScript die Monate mit 1 anfängt zu zählen. Sprich der Januar wäre somit die 1 – das ist aber nicht so. JavaScript fängt mit 0 an zu zählen! Unser Januar ist in JavaScript 0, der Februar die 1, unser April die 3 und so weiter. Wollen wir also unseren 1 April, dann bitte folgende Angabe machen.

Date(2019, 3)

Übergeben wir die Jahreszahl 2-Stellig wird diese als 19xx interpretiert!

Date(18, 3)

Unsere Eingabe ergibt somit 1918:

Mon Apr 01 1918 00:00:00 GMT+0100 (Mitteleuropäische Sommerzeit) {}

Das war es erst einmal mit den Gemeinheiten und Stolpersteinen. Jetzt können wir auch noch Tag, Stunde, Minute, Sekunde und selbst die Millisekunde mitgeben. Können – müssen aber nicht. Einfach einmal probieren.

new Date(Millisekunde) – Eingabe über Millisekunden

Hier wird mit den Millisekunden seit dem 1. Januar 1970 gerechnet. Dieses Datum orientiert sich an dem Erscheinen des Betriebssystems Unix und ist genaugenommen willkürlich. Man brauchte ein Startpunkt zum rechnen – also warum nicht den 1.1.1970?

Gibt man in der Konsole folgendes ein, erhalt man diesen „Geburtstag“:

new Date(0);

Natürlich ist das Ganze ein wenig unhandlich um selber damit etwas zu berechnen. Ein Tag, sprich 24 Stunden, besteht aus 86.400.000 Millisekunden.

Aber der wirkliche Nutzen ist eher im Vergleich. Man kann die Zeit in einer Variablen speichern, wenn ein Programm gestartet wird und dann die Zeit, wenn es abgelaufen ist und diese beiden Zeiten voneinander abziehen und bekommt somit die Programmlaufzeit in Millisekunden. Es gibt also durchaus geschickte Anwendungsmöglichkeiten.

Will man ein Datum vor dem 1.1.1970 erhalten, dann gibt man negative Zahlen an.

verfügbare Methoden für Date()

In der Regel will man keine Ungetüme als Ausgabe wie „Mon Apr 01 1918 00:00:00 GMT+0100“. Daher kann man praktisch über Methoden sich exakt die benötigten Informationen des Datums herausziehen und damit weiterarbeiten.

Methode Erklärung
getFullYear() Jahreszahl als 4-stellige Zahl (YYYY)
getMonth() Monat als Nummer, beginnend mit 0! (0-11)
getDate() Tag als Nummer (1-31)
getHours() Stunde (0-23)
getMinutes() Minute (0-59)
getSeconds() Sekunde (0-59)
getMilliseconds() Millisekunde (0-999)
getTime() Vergangene Millisekunden seit dem 1.1.1970
getDay() Wochentag als Nummer (0-6)
Date.now() Aktuelles Datum (ab ECMAScript 5)