Spec-Zone.ru › JavaScript

Temporal.Duration.prototype.with()

Базовый уровень Ограниченная доступность

Эта функция не относится к Базовому уровню, поскольку она не работает в некоторых наиболее широко используемых браузерах.

Метод with() экземпляров Temporal.Duration возвращает новый объект Temporal.Duration, представляющий эту длительность с некоторыми полями, замененными новыми значениями. Поскольку все объекты Temporal спроектированы как неизменяемые, этот метод по существу функционирует как сеттер для полей длительности.

Синтаксис

with(info)

Параметры

info
Объект, содержащий хотя бы одно из свойств, распознаваемых Temporal.Duration.from(): years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds. Для неуказанных свойств используются значения из исходной длительности.

Возвращаемое значение

Новый объект Temporal.Duration, в котором поля, указанные в info, которые не являются undefined, заменяются соответствующими значениями, а остальные поля копируются из исходной длительности.

Исключения

RangeError
Генерируется в одном из следующих случаев:
  • Любое из распознаваемых свойств в объекте info не является целым числом (включая не конечные значения).
  • Календарная единица (годы, месяцы, недели) имеет абсолютное значение ≥ 232.
  • Некалендарная часть длительности (дни и ниже), выраженная в секундах, имеет абсолютное значение ≥ 253.
TypeError
Генерируется в одном из следующих случаев:
  • Объект info не является объектом.
  • Все распознанные свойства в объекте info являются undefined.

Примеры

Использование with()

Вы можете использовать with() для достижения точного контроля над полями объекта Temporal.Duration. Например, вы можете вручную сбалансировать длительность только по одной единице, чего round() не предлагает:

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

Спецификации

Спецификация
Temporal
# sec-temporal.duration.prototype.with

Совместимость с браузерами

Десктоп Мобильные устройства Сервер
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet WebView Android WebView on iOS Bun Deno Node.js
with
144
144
139
128
preview
144
139
95
No
No
144
No
1.4.0
2.7
26.0.0

См. также

  • Temporal.Duration
  • Temporal.Duration.from()
  • Temporal.Duration.prototype.add()
  • Temporal.Duration.prototype.subtract()
  • Temporal.Duration.prototype.round()

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/Duration/with

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API