© GoodStudio/Shutterstock.com
Kolumne: Per Anhalter durch den JavaScript- Dschungel

Vorgestern ist morgen – Datum und Zeit erklärt


JavaScript hat seine guten und seine schlechten Seiten. Eins der dunkelsten Kapitel des Sprachstandards ist aber – und da wird mir die Mehrheit der JavaScript-Entwickler zustimmen – das Date-Objekt. Geht es um den Umgang mit Datums- oder Zeitangaben, entkommt man diesem Objekt kaum. Aber warum ist das Date-Objekt so schlecht? Das beste Beispiel: Der 15.08.2021 ist in der JavaScript-Welt der 15. Juli 2021. Warum? Weil die Monate in JavaScript bei 0 beginnen, und zwar nur die Monate. Aber das ist nur eins von vielen Beispielen. Weitere gefällig? Haben Sie schon einmal versucht, mit nativen Datumswerten zu rechnen? Oder eine Zeitangabe zu formatieren? Out of the box geht da gar nichts. Sie müssen die gewünschte Funktionalität entweder selbst implementieren oder Sie greifen auf eine der zahlreichen Bibliotheken zurück. Sehen wir uns also an, wie es aktuell aussieht und werfen einen Blick in die Zukunft.

Die Date-Klasse des JavaScript-Sprachstandards sieht nur eine Handvoll Klassen vor, die Sie bei Ihrer Arbeit unterstützen. Beispiele hierfür sind Math oder Date. Das bedeutet, dass Ihnen diese Konstrukte auf allen Plattformen zur Verfügung stehen und überall auf die gleiche Weise funktionieren. Es spielt also keine Rolle, ob Sie mit Safari, Firefox, Chrome oder Node.js arbeiten. Ein Date-Objekt können Sie mit dem Konstruktor auf verschiedene Arten erzeugen:

  • Ohne Argumente: Es entsteht ein Date-Objekt zum aktuellen Zeitpunkt

  • Eine Zahl als Argument: Millisekunden seit dem 1.1.1970

  • Zeichenkette: eine Repräsentation eines Datums, das entweder einem IETF-RFC-2822-Zeitstempel oder der ISO8601 entspricht

  • Mehrere Zahlenwerte: Hier müssen Sie zumindest eine Jahreszahl und den Monatsindex angeben; zusätzlich können Sie optional einen Tag, Stunde, Minute, Sekunde und Millisekunde angeben

Sie sehen, im Prinzip können Sie dem Date-Objekt so ziemlich alles übergeben, es wird schon ein Datum herauskommen. Übergeben Sie eine Zeichenkette, müssen Sie darauf achten, dass Sie das korrekte Format nutzen, ansonsten erhalten Sie ein Invalid-Date-Objekt. Übergeben Sie Zahlen, sieht die Welt schon wieder anders aus. Ein new Date(2020, 5, 32) erzeugt beispielsweise den 01.07.2020. Die Date-Klasse stellt Ihnen eine Reihe von Methoden zur Verfügung, mit denen Sie auf die einzelnen Aspekte des Datums zugreifen können. Mit getHours erhalten Sie beispielsweise den Stunden-Anteil des Datums, mit setHours können Sie diese Information ändern. Dieser Methode können Sie neben einem Zahlenwert für die Stunden auch noch optional Minuten, Sekunden und Millisekunden übergeben. Ähnlich funktioniert beispielsweise setSeconds, mit dem Sie neben den Sekunden auch noch die Millisekunden übergeben können. Die Methoden zum Setzen von Jahr, Monat und Tag funktionieren analog, nur, dass Sie keine Zeitwerte setzen können. Zugegebenermaßen, das API der Klasse fühlt sich etwas seltsam an. We...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang