Start · Sprachen · JavaScript · Referenz · Date.prototype.toString()

Date.prototype.toString()

Methode

Gibt einen String zurück, der das Datum samt Uhrzeit und Zeitzonen-Offset in der lokalen Zeitzone darstellt, z. B. <code>"Tue Mar 05 2024 14:30:00 GMT+0100 (Mitteleuropäische Normalzeit)"</code>.

seit JavaScript ES1 (Format seit ES2018 standardisiert) – Baseline Kategorie: method-property

Signatur

Date.prototype.toString()

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

Typ
string
Beschreibung
Das Datum als String in der lokalen Zeitzone. Bei einem ungültigen Datum ist der 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());
Tue Mar 05 2024 14:30:00 GMT+0100 (Mitteleuropäische Normalzeit) // Offset und Zeitzonenname hängen von der Systemzeitzone ab

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);
Log-Zeit: Mon Jul 01 2024 09:00:00 GMT+0200 (Mitteleuropäische Sommerzeit) true Start: Mon Jul 01 2024 09:00:00 GMT+0200 (Mitteleuropäische Sommerzeit)

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));
Invalid Date false

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
Mon Jan 15 2024 13:00:00 GMT+0100 (Mitteleuropäische Normalzeit) 2024-01-15T12:00:00.000Z Mon, 15 Jan 2024 12:00:00 GMT 15.1.2024, 13:00:00

// 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 du toISOString().
  • 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=UTC festlegen.
  • Nicht lokalisiert: Wochentag und Monat sind immer englisch. Für deutsche Anzeigen verwendest du toLocaleString('de-DE') oder Intl.DateTimeFormat.
  • Ungültige Daten ergeben "Invalid Date" und keine Exception. toISOString() dagegen wirft in diesem Fall einen RangeError.
  • Date.prototype.toString ist generisch nur für echte Date-Objekte. Ein Aufruf mit einem anderen this wirft einen TypeError.
  • 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.