Signatur
Beschreibung
toLocaleString() wandelt ein Temporal.PlainDateTime, also ein Datum mit Uhrzeit ohne Zeitzone, in eine Zeichenkette für Menschen um. Wie die Ausgabe aussieht, bestimmen die angegebene Sprache (locales) und die Formatierungsoptionen (options). Die Methode nutzt intern Intl.DateTimeFormat. Ein Aufruf entspricht im Kern new Intl.DateTimeFormat(locales, options).format(plainDateTime).
Ohne Optionen gibt die Methode Datum und Uhrzeit numerisch aus, also Jahr, Monat, Tag, Stunde, Minute und Sekunde. Mit dateStyle/timeStyle oder einzelnen Feldern wie weekday, month und hour legen Sie das Format genauer fest.
Nutzen Sie die Methode für Ausgaben in der Oberfläche, etwa Termine, Öffnungszeiten oder Protokolleinträge. Für Maschinen, Speicherung oder Datenaustausch ist sie nicht geeignet: Dafür gibt es toString() bzw. toJSON(). Die Ausgabe von toLocaleString() kann sich je nach Engine- und CLDR-Version ändern.
Ein PlainDateTime hat keine Zeitzone. Deshalb gibt die Methode die gespeicherte Wanduhrzeit unverändert aus. Sie rechnet nicht in die Zeitzone des Systems um.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $locales | string | string[] | Intl.Locale | undefined | undefined (Standardsprache der Laufzeitumgebung) | BCP-47-Sprachkennung wie "de-DE" oder "en-US" bzw. eine Liste davon. Erweiterungen wie -u-ca-japanese (Kalender) oder -u-hc-h12 (Stundenzyklus) sind erlaubt. |
| $options | Intl.DateTimeFormatOptions | undefined | Formatierungsoptionen wie bei Intl.DateTimeFormat, z. B. dateStyle, timeStyle, weekday, year, month, day, hour, minute, second, hour12, hourCycle, calendar. timeZone und timeZoneName sind nicht erlaubt. |
Rückgabewert
"1.8.2021, 12:34:56" für "de-DE".Beispiele
Standardausgabe in verschiedenen Sprachen
const termin = Temporal.PlainDateTime.from("2021-08-01T12:34:56");
console.log(termin.toLocaleString("de-DE"));
console.log(termin.toLocaleString("en-US"));
console.log(termin.toLocaleString("en-GB"));
Termin mit dateStyle/timeStyle und einzelnen Feldern formatieren
const meeting = new Temporal.PlainDateTime(2021, 8, 1, 12, 34);
// Vorgefertigte Stile
console.log(meeting.toLocaleString("de-DE", { dateStyle: "full", timeStyle: "short" }));
// Einzelne Felder frei kombinieren
console.log(
meeting.toLocaleString("de-DE", {
weekday: "short",
day: "2-digit",
month: "long",
hour: "2-digit",
minute: "2-digit",
})
);
Viele Werte effizient formatieren mit Intl.DateTimeFormat
const eintraege = [
Temporal.PlainDateTime.from("2024-03-10T08:15"),
Temporal.PlainDateTime.from("2024-03-10T13:40"),
Temporal.PlainDateTime.from("2024-03-11T09:05"),
];
// Formatter nur einmal erzeugen, statt bei jedem toLocaleString()-Aufruf
const fmt = new Intl.DateTimeFormat("de-DE", {
dateStyle: "medium",
timeStyle: "short",
});
for (const e of eintraege) {
console.log(fmt.format(e));
}
Fehlerfälle: timeZone-Option und abweichender Kalender
const dt = Temporal.PlainDateTime.from("2021-08-01T12:00");
try {
dt.toLocaleString("de-DE", { timeZone: "Europe/Berlin" });
} catch (err) {
console.log(err.name); // PlainDateTime hat keine Zeitzone
}
try {
dt.withCalendar("hebrew").toLocaleString("de-DE");
} catch (err) {
console.log(err.name); // Kalender passt nicht zur Sprache
}
// Richtig: den Kalender auch in der Sprachangabe setzen
console.log(dt.withCalendar("hebrew").toLocaleString("de-DE-u-ca-hebrew"));