Spec-Zone.ru › JavaScript

Temporal.PlainYearMonth.prototype.since()

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

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

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

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

Синтаксис

since(other)
since(other, options)

Параметры

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

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

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

Исключения

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

Примеры

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

const lastUpdated = Temporal.PlainYearMonth.from("2022-01");
const now = Temporal.Now.plainDateISO().toPlainYearMonth();
const duration = now.since(lastUpdated);
console.log(`Last updated ${duration.toLocaleString("en-US")} ago`);
// Expected output: "Last updated [number] years, [number] months ago"

const duration2 = now.since(lastUpdated, { largestUnit: "months" });
console.log(`Last updated ${duration2.toLocaleString("en-US")} ago`);
// Expected output: "Last updated [number] months ago"

const duration3 = now.since(lastUpdated, { smallestUnit: "years" });
console.log(`Last updated ${duration3.toLocaleString("en-US")} ago`);
// Expected output: "Last updated [number] years ago"

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

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

const ym1 = Temporal.PlainYearMonth.from("2022-01");
const ym2 = Temporal.PlainYearMonth.from("2022-11");
const duration = ym2.since(ym1, {
  smallestUnit: "years",
  roundingMode: "ceil",
});
console.log(duration.toString()); // "P1Y"

Получение результата в днях

По умолчанию результирующая продолжительность не содержит дней, так как PlainYearMonth не предоставляет точность на уровне дней. Вы можете получить результат в днях, преобразовав его сначала в Temporal.PlainDate с однозначным днем.

const ym1 = Temporal.PlainYearMonth.from("2022-01");
const ym2 = Temporal.PlainYearMonth.from("2022-11");
const duration = ym2.toPlainDate({ day: 1 }).since(ym1.toPlainDate({ day: 1 }));
console.log(duration.toString()); // "P304D"

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

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

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

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

См. также

  • Temporal.PlainYearMonth
  • Temporal.Duration
  • Temporal.PlainYearMonth.prototype.add()
  • Temporal.PlainYearMonth.prototype.subtract()
  • Temporal.PlainYearMonth.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/PlainYearMonth/since

Spec-Zone.ru

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