Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

Temporal.Duration.prototype.with()

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Die with()-Methode von Temporal.Duration Instanzen gibt ein neues Temporal.Duration-Objekt zurück, das diese Dauer mit einigen Feldern darstellt, die durch neue Werte ersetzt wurden. Da alle Temporal-Objekte so konzipiert sind, dass sie unveränderlich sind, fungiert diese Methode im Wesentlichen als Setter für die Felder der Dauer.

Syntax

js
with(info)

Parameter

info

Ein Objekt, das mindestens eine der Eigenschaften enthält, die von Temporal.Duration.from() erkannt werden: years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds. Nicht angegebene Eigenschaften verwenden die Werte der ursprünglichen Dauer.

Rückgabewert

Ein neues Temporal.Duration-Objekt, bei dem die im info angegebenen Felder, die nicht undefined sind, durch die entsprechenden Werte ersetzt werden und die restlichen Felder von der ursprünglichen Dauer übernommen werden.

Ausnahmen

RangeError

Wird in einem der folgenden Fälle ausgelöst:

  • Eine der erkannten Eigenschaften im info-Objekt ist keine ganze Zahl (einschließlich nicht endlicher Werte).
  • Eine Kalendereinheit (Jahre, Monate, Wochen) hat einen absoluten Wert ≥ 232.
  • Der nicht kalenderbezogene Teil der Dauer (Tage und darunter), ausgedrückt in Sekunden, hat einen absoluten Wert ≥ 253.
TypeError

Wird in einem der folgenden Fälle ausgelöst:

  • Das info-Objekt ist kein Objekt.
  • Alle im info-Objekt erkannten Eigenschaften sind undefined.

Beispiele

Verwendung von with()

Sie können with() verwenden, um eine feingranulare Kontrolle über die Felder eines Temporal.Duration-Objekts zu erreichen. Beispielsweise können Sie eine Dauer manuell nur auf einer Einheit ausgleichen, was round() nicht bietet:

js
function balanceMinutes(duration) {
  const { hours, minutes } = duration;
  const totalMinutes = hours * 60 + minutes;
  const balancedMinutes = totalMinutes % 60;
  const balancedHours = (totalMinutes - balancedMinutes) / 60;
  return duration.with({ hours: balancedHours, minutes: balancedMinutes });
}

const d1 = Temporal.Duration.from({ hours: 100, minutes: 100, seconds: 100 });
const d2 = balanceMinutes(d1);
console.log(d2.hours); // 101
console.log(d2.minutes); // 40
console.log(d2.seconds); // 100; remains unbalanced

Spezifikationen

Specification
Temporal
# sec-temporal.duration.prototype.with

Browser-Kompatibilität

Siehe auch