Temporal.PlainDateTime.prototype.since()
Базовый стандарт Ограниченная доступность
Эта функция не является базовым стандартом, так как она не работает в некоторых наиболее широко используемых браузерах.
Метод since() экземпляров Temporal.PlainDateTime возвращает новый объект Temporal.Duration, представляющий продолжительность от другого даты-времени (в форме, преобразуемой с помощью Temporal.PlainDateTime.from()) до этого даты-времени. Продолжительность положительна, если другое даты-время предшествует этому даты-времени, и отрицательна, если следует за ним.
Этот метод this - other. Чтобы other - this, используйте метод until().
Синтаксис
since(other) since(other, options)
Параметры
-
other - Строка, объект или экземпляр
Temporal.PlainDateTime, представляющий дату-время, которое нужно вычесть из этого даты-времени. Он преобразуется в объектTemporal.PlainDateTime, используя тот же алгоритм, что иTemporal.PlainDateTime.from(). Он должен иметь тот же календарь, что иthis. -
optionsНеобязательно - Объект, содержащий параметры для
Temporal.Duration.prototype.round(), который включаетlargestUnit,roundingIncrement,roundingModeиsmallestUnit.largestUnitиsmallestUnitпринимают все возможные единицы измерения. ДляlargestUnitзначение по умолчанию"auto"означает"days"илиsmallestUnit, в зависимости от того, что больше. ДляsmallestUnitзначение по умолчанию —"nanoseconds". Текущая дата используется в качестве параметраrelativeTo. Обратите внимание, что использование единиц измерения, больших чем"days", может сделать продолжительность несовместимой с другими календарями или датами.
Возвращаемое значение
Новый объект Temporal.Duration, представляющий продолжительность *с* other до этого даты-времени. Продолжительность положительна, если other предшествует этому даты-времени, и отрицательна, если следует за ним.
Исключения
-
RangeError - Выбрасывается в одном из следующих случаев:
-
otherимеет календарь, отличный отthis. - Любой из параметров недействителен.
-
Примеры
Использование since()
let lastBilling = Temporal.PlainDateTime.from({
year: Temporal.Now.plainDateISO().year,
month: 4,
day: 1,
});
const now = Temporal.Now.plainDateTimeISO().round("second");
if (Temporal.PlainDateTime.compare(lastBilling, now) > 0) {
lastBilling = lastBilling.subtract({ years: 1 });
}
const duration = now.since(lastBilling);
console.log(`${duration.toLocaleString("en-US")} since last billing`);
// Expected output: "[number] days, [number] hr, [number] min, [number] sec since last billing"
const duration2 = now.since(lastBilling, { smallestUnit: "days" });
console.log(`${duration2.toLocaleString("en-US")} since last billing`);
// Expected output: "[number] days since last billing"
const duration3 = now.since(lastBilling, {
largestUnit: "years",
smallestUnit: "days",
});
console.log(`${duration3.toLocaleString("en-US")} since last billing`);
// Expected output: "[number] months, [number] days since last billing"
Округление результата
По умолчанию дробная часть smallestUnit отбрасывается. Вы можете округлить ее с помощью параметров roundingIncrement и roundingMode.
const dt1 = Temporal.PlainDateTime.from("2022-01-01T00:00:00");
const dt2 = Temporal.PlainDateTime.from("2022-01-28T12:34:56");
const duration = dt2.since(dt1, {
smallestUnit: "days",
roundingIncrement: 5,
roundingMode: "ceil",
});
console.log(duration.toString()); // "P30D"
Спецификации
| Спецификация |
|---|
| Temporal # sec-temporal.plaindatetime.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.PlainDateTimeTemporal.DurationTemporal.PlainDateTime.prototype.add()Temporal.PlainDateTime.prototype.subtract()Temporal.PlainDateTime.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/PlainDateTime/since