Die Methode Date.prototype.toLocaleDateString() gibt den Datumsanteil eines Date-Objekts als lokalisierten String zurück – also in einem Format, das der Sprache und Region des Nutzers entspricht. Sie ist die richtige Wahl für alle nutzersichtbaren Datumsausgaben, da sie automatisch Sprachkonventionen, Datumsreihenfolge (DD.MM.YYYY vs. MM/DD/YYYY) und Zeichensetzung berücksichtigt. Über optionale Parameter lässt sich das Format zusätzlich fein justieren.
Funktionsweise
Die Methode delegiert intern an Intl.DateTimeFormat, ist aber kompakter zu schreiben, wenn nur ein einzelnes Datum formatiert werden soll. Für viele Daten in Folge (z. B. in einer Tabelle) ist Intl.DateTimeFormat performanter, da der Formatter nur einmal erzeugt wird.
Die Locale steuert:
- Reihenfolge der Komponenten (Tag/Monat/Jahr).
- Trennzeichen (Punkt, Schrägstrich, Bindestrich, Leerzeichen).
- Sprache der Monats- und Wochentagsnamen.
- Kalender-System (Gregorian, Buddhist, Hebrew etc.).
Syntax
date.toLocaleDateString()
date.toLocaleDateString(locales)
date.toLocaleDateString(locales, options)locales (Optional) Ein BCP-47-Sprachcode (z. B. "de-DE", "en-US") oder ein Array davon. Ohne Angabe wird die Default-Locale des Systems verwendet.
options (Optional) Ein Objekt mit Formatierungsoptionen:
dateStyle:"full"|"long"|"medium"|"short"– Kurzform.weekday,year,month,day:"numeric"|"2-digit"|"long"|"short"|"narrow"– feinere Kontrolle.timeZone: Zeitzone (z. B."UTC","Europe/Berlin").calendar: Kalendersystem.
Rückgabewert
Ein lokalisierter String, der das Datum repräsentiert.
Beispiele
Standard-Ausgabe in deutscher Locale
const date = new Date("2026-05-01");
console.log(date.toLocaleDateString("de-DE"));1.5.2026Vergleich verschiedener Locales
const date = new Date("2026-05-01");
console.log(date.toLocaleDateString("de-DE"));
console.log(date.toLocaleDateString("en-US"));
console.log(date.toLocaleDateString("en-GB"));
console.log(date.toLocaleDateString("ja-JP"));1.5.2026
5/1/2026
01/05/2026
2026/5/1Langform mit Wochentag
const date = new Date("2026-05-01");
const text = date.toLocaleDateString("de-DE", {
weekday: "long",
year: "numeric",
month: "long",
day: "numeric"
});
console.log(text);Freitag, 1. Mai 2026dateStyle als Kurzform
const date = new Date("2026-05-01");
console.log(date.toLocaleDateString("de-DE", { dateStyle: "full" }));
console.log(date.toLocaleDateString("de-DE", { dateStyle: "long" }));
console.log(date.toLocaleDateString("de-DE", { dateStyle: "medium" }));
console.log(date.toLocaleDateString("de-DE", { dateStyle: "short" }));Freitag, 1. Mai 2026
1. Mai 2026
01.05.2026
01.05.26Spezifische Zeitzone
const date = new Date("2026-05-01T23:30:00Z");
console.log(date.toLocaleDateString("de-DE", { timeZone: "UTC" }));
console.log(date.toLocaleDateString("de-DE", { timeZone: "Europe/Berlin" }));
console.log(date.toLocaleDateString("de-DE", { timeZone: "America/Los_Angeles" }));1.5.2026
2.5.2026
1.5.2026Hinweise & verwandte Methoden
- Für viele Datumsformatierungen in Folge ist
Intl.DateTimeFormatperformanter, weil der Formatter nur einmal angelegt werden muss. - Für Datum + Uhrzeit:
Date.prototype.toLocaleString(). - Für nur Uhrzeit:
Date.prototype.toLocaleTimeString(). - Die Default-Locale (ohne
locales-Argument) hängt vom System ab und kann auf Servern unerwartete Werte haben – immer explizit angeben, wenn das Format reproduzierbar sein soll. - Für maschinenlesbare Ausgaben in Backends oder APIs sollte
toISOString()statt einer lokalisierten Variante verwendet werden.