Spec-Zone.ru › JavaScript

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.PlainDateTime
  • Temporal.Duration
  • Temporal.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

Spec-Zone.ru

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