Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

Temporal.Duration : méthode with()

Disponibilité limitée

Cette fonctionnalité n'est pas Compatible car elle ne fonctionne pas dans certains des navigateurs les plus utilisés.

La méthode with() des instances de Temporal.Duration retourne un nouvel objet Temporal.Duration représentant cette durée avec certains champs remplacés par de nouvelles valeurs. Comme tous les objets Temporal sont conçus pour être immuables, cette méthode fonctionne essentiellement comme le mutateur des champs de la durée.

Syntaxe

js
with(info)

Paramètres

info

Un objet contenant au moins une des propriétés reconnues par Temporal.Duration.from() : years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds. Les propriétés non définies utilisent les valeurs de la durée originale.

Valeur de retour

Un nouvel objet Temporal.Duration, où les champs définis dans info qui ne sont pas undefined sont remplacés par les valeurs correspondantes, et le reste des champs est copié à partir de la durée originale.

Exceptions

RangeError

Levée dans l'un des cas suivants :

  • L'une des propriétés reconnues dans l'objet info n'est pas un entier (y compris les valeurs non finies).
  • Une unité de calendrier (années, mois, semaines) a une valeur absolue ≥ 232.
  • La partie non-calendrier de la durée (jours et en dessous), lorsqu'elle est exprimée en secondes, a une valeur absolue ≥ 253.
TypeError

Levée dans l'un des cas suivants :

  • L'objet info n'est pas un objet.
  • Toutes les propriétés reconnues dans l'objet info sont undefined.

Exemples

Utiliser la méthode with()

Vous pouvez utiliser with() pour obtenir un contrôle précis sur les champs d'un objet Temporal.Duration. Par exemple, vous pouvez équilibrer manuellement une durée uniquement sur une unité, ce que round() ne permet pas :

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 ; reste non équilibré

Spécifications

Spécification
Temporal
# sec-temporal.duration.prototype.with

Compatibilité des navigateurs

Voir aussi