Signatur
Beschreibung
Date.prototype.toString() wandelt ein Date-Objekt in eine gut lesbare Zeichenkette um. Datum und Uhrzeit stehen dabei in der lokalen Zeitzone der Laufzeitumgebung, ergänzt um den Offset zu UTC und meist um einen Zeitzonennamen in Klammern.
Seit ES2018 ist das Format festgelegt: Www Mmm DD YYYY HH:mm:ss GMT±hhmm (Zeitzonenname). Wochentag und Monat sind immer englische Abkürzungen. Nur der Name der Zeitzone in Klammern hängt von der Implementierung ab. Er kann lokalisiert sein, abgekürzt oder ganz fehlen.
Die Methode wird automatisch aufgerufen, wenn ein Date in einen String umgewandelt wird: bei Template-Literalen, bei String(date) und bei der Verkettung mit +. Ein Date-Objekt nutzt dafür den Hinweis "string" in Date.prototype[Symbol.toPrimitive]. Auch Date() ohne new gibt genau diesen String zurück.
Gut geeignet ist die Methode für Debugging und Logs. Für Datenaustausch, Speicherung oder APIs nimmst du besser toISOString(). Für Anzeigen, die sich an die Sprache der Nutzer anpassen, sind toLocaleString() oder Intl.DateTimeFormat die richtige Wahl.
Rückgabewert
"Invalid Date".Beispiele
Grundlegende Umwandlung
// Monat ist 0-basiert: 2 = März
const termin = new Date(2024, 2, 5, 14, 30);
console.log(termin.toString());
Automatischer Aufruf bei String-Umwandlung
const jetzt = new Date(2024, 6, 1, 9, 0);
// Alle drei Varianten rufen intern toString() auf
console.log(`Log-Zeit: ${jetzt}`);
console.log(String(jetzt) === jetzt.toString());
console.log('Start: ' + jetzt);
Ungültige Daten erkennen
const eingabe = new Date('kein-datum');
console.log(eingabe.toString());
// Robuster prüfen als über den String-Vergleich
const istGueltig = (d) => d instanceof Date && !Number.isNaN(d.getTime());
console.log(istGueltig(eingabe));
Vergleich mit anderen Formatierungsmethoden
const d = new Date(Date.UTC(2024, 0, 15, 12, 0));
console.log(d.toString()); // lokal, fürs Debugging
console.log(d.toISOString()); // UTC, maschinenlesbar
console.log(d.toUTCString()); // UTC, für HTTP-Header
console.log(d.toLocaleString('de-DE')); // lokalisiert
// Wichtig · Fallstricke
- Nicht zum Speichern oder Parsen verwenden: Der Zeitzonenname in Klammern hängt von der Implementierung ab. Er unterscheidet sich zwischen Browsern, Node.js und Systemsprachen. Ob
Date.parse()den String wieder korrekt einliest, ist nicht garantiert. Für einen Austausch ohne Verluste verwendest dutoISOString(). - Abhängig von der Zeitzone: Derselbe Zeitpunkt ergibt auf Rechnern mit verschiedenen Zeitzonen unterschiedliche Strings. Das macht Snapshot-Tests und Logs auf Servern unzuverlässig. In Node.js kannst du die Zeitzone z. B. über die Umgebungsvariable
TZ=UTCfestlegen. - Nicht lokalisiert: Wochentag und Monat sind immer englisch. Für deutsche Anzeigen verwendest du
toLocaleString('de-DE')oderIntl.DateTimeFormat. - Ungültige Daten ergeben
"Invalid Date"und keine Exception.toISOString()dagegen wirft in diesem Fall einenRangeError. Date.prototype.toStringist generisch nur für echte Date-Objekte. Ein Aufruf mit einem anderenthiswirft einenTypeError.- Kompatibilität: Die Methode wird von allen Browsern und von Node.js unterstützt. Das einheitliche Format gilt seit ES2018, ältere Engines konnten leicht abweichen.