JavaScript-Date-Playground
Tippe einen JavaScript-Date-Ausdruck und erkunde jedes Ausgabeformat und jede Eigenschaft in Echtzeit — toISOString, toString, getTime, getFullYear und mehr.
Das JavaScript-Date-Objekt
Das eingebaute Date-Objekt von JavaScript speichert die Zeit intern als Anzahl der Millisekunden seit der Unix-Epoch (1. Januar 1970 00:00:00 UTC). Jede Date-Instanz ist letztlich nur diese eine Ganzzahl. Die verschiedenen Methoden — toISOString(), toString(), toLocaleString() — sind unterschiedliche Wege, denselben zugrunde liegenden Wert anzuzeigen.
Häufige Fallstricke bei JavaScript-Daten
Mehrere Verhaltensweisen von Date bringen selbst erfahrene Entwickler ins Stolpern:
- Monate sind nullbasiert: Januar ist 0, Dezember ist 11 — beim Anzeigen immer 1 addieren
- new Date('2024-01-01') wird als UTC-Mitternacht geparst; new Date('2024/01/01') als lokale Mitternacht
- new Date(2024, 0, 1) erzeugt den 1. Januar 2024 in lokaler Zeit (Monat ist nullbasiert)
- Date.now() liefert Millisekunden; Math.floor(Date.now() / 1000) ergibt Unix-Sekunden
- Vermeide das Addieren von Tagen über 86400000 ms — durch DST kann das Ergebnis falsch liegen
Mit Zeitzonen in JavaScript arbeiten
Das Date-Objekt von JavaScript hat keine Zeitzonen-Eigenschaft — es wird immer in UTC gespeichert. Zeitzonen-Umrechnungen erfolgen bei der Anzeige über die API Intl.DateTimeFormat.
- new Intl.DateTimeFormat('en-US', { timeZone: 'Asia/Tokyo', dateStyle: 'full', timeStyle: 'long' }).format(date)
- date.toLocaleString('zh-CN', { timeZone: 'Asia/Shanghai' })
- new Intl.DateTimeFormat('en-CA', { timeZone: tz }).formatToParts(date) — liefert einzelne Teile für eigene Formate
Die Playground-Ausgabe lesen
Das Playground zeigt mehrere Sichten desselben Date-Werts, um Einheiten- und Zeitzonenfehler schnell zu erkennen. Vergleiche zuerst getTime mit den Unix-Sekunden, prüfe dann die ISO- und lokalen Strings. Ist das ISO-Datum korrekt, der lokale String aber anders, stimmt der Timestamp und nur die Anzeige-Zeitzone hat sich geändert.
- getTime ist immer in Millisekunden seit der Unix-Epoch
- Unix-Sekunden sind getTime geteilt durch 1000 und abgerundet
- toISOString zeigt immer UTC mit abschließendem Z
- toString und toLocaleString zeigen die lokale Browser-Zeitzone, sofern Optionen sie nicht überschreiben