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"
Спецификации
Совместимость с браузерами
| Настольные компьютеры | Мобильные устройства | Сервер | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 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.PlainYearMonthTemporal.DurationTemporal.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