Start · Sprachen · JavaScript · Referenz · Temporal.PlainDateTime.prototype.toLocaleString()

Temporal.PlainDateTime.prototype.toLocaleString()

Methode

Gibt eine sprachabhängige, gut lesbare Zeichenkette für Datum und Uhrzeit eines <code>Temporal.PlainDateTime</code> zurück, formatiert über <code>Intl.DateTimeFormat</code>.

seit JavaScript Temporal (ES-Vorschlag Stufe 3/4) – Firefox 139+, Kategorie: method-property

Signatur

Temporal.PlainDateTime.prototype.toLocaleString(locales, options)

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

Typ
string
Beschreibung
Eine sprachabhängig formatierte Zeichenkette mit Datum und Uhrzeit, z. B. "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"));
1.8.2021, 12:34:56 8/1/2021, 12:34:56 PM 01/08/2021, 12:34:56

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",
  })
);
Sonntag, 1. August 2021 um 12:34 So., 01. August um 12:34 (Ausgabe je nach Engine leicht abweichend)

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));
}
10.03.2024, 08:15 10.03.2024, 13:40 11.03.2024, 09:05

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"));
TypeError RangeError (Datum im hebräischen Kalender, z. B. "23. Aw 5781, 12:00:00")