Start · Sprachen · JavaScript · Referenz · Intl.DurationFormat.prototype.resolvedOptions()

Intl.DurationFormat.prototype.resolvedOptions()

Methode

Gibt ein neues Objekt mit den tatsächlich verwendeten (aufgelösten) Locale- und Formatierungsoptionen einer <code>Intl.DurationFormat</code>-Instanz zurück.

seit JavaScript ES2025 (ECMA-402) – Baseline 2025: Chrome 129+, Ed Kategorie: method-property

Signatur

Intl.DurationFormat.prototype.resolvedOptions()

Beschreibung

resolvedOptions() zeigt, mit welchen Einstellungen ein Intl.DurationFormat-Objekt tatsächlich arbeitet. Das kann von dem abweichen, was du dem Konstruktor übergeben hast: Die Locale wird mit den vom System unterstützten Locales abgeglichen, fehlende Optionen werden durch Standardwerte ergänzt und die Stile der einzelnen Einheiten werden aus dem Gesamtstil (style) abgeleitet.

Das zurückgegebene Objekt enthält unter anderem:

  • locale – die ausgehandelte BCP-47-Sprachkennung, z. B. "de-DE"
  • numberingSystem – das Zahlensystem, z. B. "latn"
  • style – "long", "short" (Standard), "narrow" oder "digital"
  • für jede Einheit (years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds) den Stil der Einheit sowie die zugehörige …Display-Eigenschaft ("auto" oder "always")
  • fractionalDigits – nur vorhanden, wenn die Option beim Erzeugen gesetzt wurde

Typische Einsatzzwecke sind Debugging („Warum wird die Stunde nicht angezeigt?“), das Prüfen, ob eine gewünschte Locale verfügbar ist, und das Weiterreichen bzw. Klonen einer Konfiguration an einen zweiten Formatierer.

Jeder Aufruf liefert ein neues Objekt. Änderungen daran wirken sich nicht auf den Formatierer aus.

Rückgabewert

Typ
Object
Beschreibung
Ein neues, einfaches Objekt mit den aufgelösten Eigenschaften locale, numberingSystem, style, den Einheiten-Stilen und …Display-Werten sowie optional fractionalDigits.

Beispiele

Aufgelöste Grundoptionen auslesen

const df = new Intl.DurationFormat("de-DE", { style: "long" });
const opts = df.resolvedOptions();

console.log(opts.locale);
console.log(opts.style);
console.log(opts.hours, opts.hoursDisplay);
console.log(df.format({ hours: 1, minutes: 30 }));
de-DE long long auto 1 Stunde und 30 Minuten

Abgeleitete Stile im Digital-Modus prüfen

const clock = new Intl.DurationFormat("en", { style: "digital" });
const { hours, minutes, seconds, hoursDisplay } = clock.resolvedOptions();

console.log(hours, minutes, seconds);
console.log(hoursDisplay);
console.log(clock.format({ hours: 2, minutes: 5, seconds: 9 }));
numeric 2-digit 2-digit always 2:05:09

Locale-Fallback erkennen

// Prüfen, ob die gewünschte Locale wirklich unterstützt wird
const wunsch = "xx-YY";
const df = new Intl.DurationFormat([wunsch, "de"]);
const { locale } = df.resolvedOptions();

if (locale !== wunsch) {
  console.warn(`Fallback aktiv: ${locale} statt ${wunsch}`);
}
Fallback aktiv: de statt xx-YY

Konfiguration auf zweiten Formatierer übertragen

const original = new Intl.DurationFormat("fr", { style: "narrow", daysDisplay: "always" });
const { locale, ...optionen } = original.resolvedOptions();

// Gleiche Optionen, andere Sprache
const kopie = new Intl.DurationFormat("de", optionen);
console.log(kopie.resolvedOptions().daysDisplay);
always

// Wichtig · Fallstricke

  • Kompatibilität: Intl.DurationFormat ist recht neu (ES2025). In älteren Browsern und Node.js-Versionen vor 23 fehlt es – vorher mit typeof Intl.DurationFormat === "function" prüfen oder ein Polyfill (z. B. @formatjs/intl-durationformat) einsetzen.
  • Die zurückgegebenen Werte hängen von den ICU-/CLDR-Daten der Laufzeitumgebung ab. Insbesondere locale kann je nach Browser unterschiedlich ausgehandelt werden – nicht fest im Code voraussetzen.
  • Einheiten-Stile werden aus style abgeleitet: Bei "digital" werden Stunden, Minuten und Sekunden numerisch mit …Display: "always" aufgelöst, bei den anderen Stilen übernehmen die Einheiten den Gesamtstil mit "auto".
  • fractionalDigits fehlt im Ergebnis, wenn es nicht explizit gesetzt wurde. Mit "fractionalDigits" in opts prüfen statt auf einen Standardwert zu vertrauen.
  • Wird die Methode nicht auf einer echten Intl.DurationFormat-Instanz aufgerufen (z. B. per call mit einem anderen Objekt), wirft sie einen TypeError.