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.PlainDateTemporal.DurationTemporal.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