Playground

JavaScript-Date-Playground

Tippe einen JavaScript-Date-Ausdruck und erkunde jedes Ausgabeformat und jede Eigenschaft in Echtzeit — toISOString, toString, getTime, getFullYear und mehr.

JavaScript Expression

Type any expression that returns a Date or number.

Das JavaScript-Date-Objekt

Das in JavaScript integrierte Date-Objekt speichert die Zeit intern als Anzahl der Millisekunden seit der Unix-Epoche (1. Januar 1970 00:00:00 UTC). Jede Date-Instanz ist letztlich nur diese eine ganze Zahl. Die verschiedenen Methoden — toISOString(), toString(), toLocaleString() — sind unterschiedliche Arten, denselben zugrunde liegenden Wert darzustellen.

Häufige Fallstricke beim Umgang mit JavaScript-Daten

Mehrere Verhaltensweisen von JavaScript 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 interpretiert; new Date('2024/01/01') als lokale Mitternacht
  • new Date(2024, 0, 1) erstellt den 1. Januar 2024 in lokaler Zeit (Monat ist nullbasiert)
  • Date.now() liefert Millisekunden; Math.floor(Date.now() / 1000) ergibt Unix-Sekunden
  • Vermeide es, Tage durch Addieren von 86400000ms hinzuzufügen — wegen DST kann das auf der falschen Zeit landen

Mit Zeitzonen in JavaScript arbeiten

Das Date-Objekt von JavaScript hat keine Zeitzoneneigenschaft — es wird immer in UTC gespeichert. Zeitzonenumrechnungen werden beim Anzeigen mit der Intl.DateTimeFormat-API durchgeführt.

  • 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 Bestandteile für benutzerdefinierte Formatierung

Die Playground-Ausgabe lesen

Der Playground zeigt denselben Date-Wert in mehreren Ansichten, damit du Einheiten- und Zeitzonenfehler schnell erkennst. Vergleiche zuerst getTime mit den Unix-Sekunden, prüfe dann die ISO- und lokalen Strings. Wenn das ISO-Datum korrekt ist, der lokale String aber anders aussieht, stimmt der Zeitstempel und nur die Anzeigezeitzone hat sich geändert.

  • getTime ist immer Millisekunden seit der Unix-Epoche
  • Unix-Sekunden sind getTime geteilt durch 1000 und abgerundet
  • toISOString zeigt immer UTC mit einem abschließenden Z
  • toString und toLocaleString zeigen die Browser-lokale Zeitzone an, sofern keine Optionen dies überschreiben