Spec-Zone.ru › JavaScript

Temporal.PlainDate.prototype.since()

Baseline Ограниченная доступность

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

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

Этот метод this - other. Чтобы other - this, используйте метод until().

Синтаксис

since(other)
since(other, options)

Параметры

other
Строка, объект или экземпляр Temporal.PlainDate, представляющий дату, которую нужно вычесть из этой даты. Она преобразуется в объект Temporal.PlainDate с использованием того же алгоритма, что и Temporal.PlainDate.from(). Она должна иметь тот же календарь, что и this.
options Необязательный
Объект, содержащий параметры для Temporal.Duration.prototype.round(), который включает largestUnit, roundingIncrement, roundingMode и smallestUnit. largestUnit и smallestUnit принимают только единицы: "years", "months", "weeks", "days" или их единственные формы. Для largestUnit значение по умолчанию "auto" означает "days" или smallestUnit, в зависимости от того, какое значение больше. Для smallestUnit значение по умолчанию - "days". Текущая дата используется как параметр relativeTo. Обратите внимание, что использование единиц, больших чем "days", может сделать продолжительность непереносимой на другие календари или даты.

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

Новый объект Temporal.Duration, представляющий продолжительность *с* other до этой даты. Продолжительность положительна, если other предшествует этой дате, и отрицательна, если следует за ней.

Исключения

RangeError
Выбрасывается в одном из следующих случаев:
  • other имеет календарь, отличный от this.
  • Любой из параметров недействителен.

Примеры

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

const date = Temporal.PlainDate.from("2022-12-25");
const now = Temporal.Now.plainDateISO();
const duration = now.since(date);
const formatter = new Intl.DurationFormat("en-US", { style: "long" });
console.log(`It's been ${formatter.format(duration)} since that Christmas...`);
// Expected output: "It's been [number] days since that Christmas..."

const duration2 = now.since(date, { smallestUnit: "months" });
console.log(`It's been ${formatter.format(duration2)} since that Christmas...`);
// Expected output: "It's been [number] months since that Christmas..."

const duration3 = now.since(date, {
  largestUnit: "years",
  smallestUnit: "months",
});
console.log(`It's been ${formatter.format(duration3)} since that Christmas...`);
// Expected output: "It's been [number] years, [number] months since that Christmas..."

Округление результата

По умолчанию дробная часть smallestUnit отсекается. Вы можете округлить ее вверх, используя параметры roundingIncrement и roundingMode.

const date1 = Temporal.PlainDate.from("2022-01-01");
const date2 = Temporal.PlainDate.from("2022-01-28");
const duration = date2.since(date1, {
  smallestUnit: "days",
  roundingIncrement: 5,
  roundingMode: "ceil",
});
console.log(duration.toString()); // "P30D"

Сравнение разных календарей

По умолчанию две даты должны иметь одинаковый календарь. Это сделано для того, чтобы избежать неоднозначности в значении месяцев и лет. Если вы хотите сравнить даты из разных календарей, вы можете сначала преобразовать их в один и тот же календарь.

const date1 = Temporal.PlainDate.from("2022-01-01");
const date2 = Temporal.PlainDate.from("2022-01-28[u-ca=chinese]");
const duration = date2.withCalendar("iso8601").since(date1);
console.log(duration.toString()); // "P27D"

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

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

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

Настольные компьютеры Мобильные устройства Сервер
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
since
144
144
139
128
preview
144
139
95
Нет
Нет
144
Нет
1.4.0
2.7
26.0.0

См. также

  • Temporal.PlainDate
  • Temporal.Duration
  • Temporal.PlainDate.prototype.add()
  • Temporal.PlainDate.prototype.subtract()
  • Temporal.PlainDate.prototype.until()

© 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/PlainDate/since

Spec-Zone.ru

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