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