Spec-Zone.ru › JavaScript

Temporal.ZonedDateTime.compare()

Базовая реализация Ограниченная доступность

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

Статический метод Temporal.ZonedDateTime.compare() возвращает число (-1, 0 или 1), указывающее, предшествует ли первая дата и время второй дате и времени, совпадает ли с ней или следует за ней. Это эквивалентно сравнению epochNanoseconds двух дат и времени.

Синтаксис

Temporal.ZonedDateTime.compare(dateTime1, dateTime2)

Параметры

dateTime1
Строка, объект или экземпляр Temporal.ZonedDateTime, представляющий первую дату и время для сравнения. Он преобразуется в объект Temporal.ZonedDateTime, используя тот же алгоритм, что и Temporal.ZonedDateTime.from().
dateTime2
Вторая дата и время для сравнения, преобразованная в объект Temporal.ZonedDateTime, используя тот же алгоритм, что и dateTime1.

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

Возвращает -1, если dateTime1 предшествует dateTime2, 0, если они совпадают, и 1, если dateTime1 следует за dateTime2. Они сравниваются по их основным значениям момента времени (instant values), игнорируя их календари или часовые пояса.

Примеры

Использование Temporal.ZonedDateTime.compare()

const dt1 = Temporal.ZonedDateTime.from("2021-08-01T01:00:00[Europe/London]");
const dt2 = Temporal.ZonedDateTime.from("2021-08-02T00:00:00[Europe/London]");
console.log(Temporal.ZonedDateTime.compare(dt1, dt2)); // -1

const dt3 = Temporal.ZonedDateTime.from("2021-08-01T00:00:00[Europe/London]");
console.log(Temporal.ZonedDateTime.compare(dt1, dt3)); // 1

Сортировка массива дат и времени

Целью этой функции compare() является служить компаратором для передачи в Array.prototype.sort() и связанные функции.

const dateTimes = [
  Temporal.ZonedDateTime.from("2021-08-01T00:00:00[America/New_York]"),
  Temporal.ZonedDateTime.from("2021-08-01T00:00:00[Asia/Hong_Kong]"),
  Temporal.ZonedDateTime.from("2021-08-01T00:00:00[Europe/London]"),
];

dateTimes.sort(Temporal.ZonedDateTime.compare);
console.log(dateTimes.map((d) => d.toString()));
// [ "2021-08-01T00:00:00+08:00[Asia/Hong_Kong]", "2021-08-01T00:00:00+01:00[Europe/London]", "2021-08-01T00:00:00-04:00[America/New_York]" ]

Обратите внимание, что они сравниваются по их значениям момента времени (instant values). В очень редких случаях, когда вы хотите сравнить их по их времени настенных часов (wall-clock times), сначала преобразуйте их в PlainDateTime.

const dateTimes = [
  Temporal.ZonedDateTime.from("2021-08-01T00:00:00[America/New_York]"),
  Temporal.ZonedDateTime.from("2021-08-01T00:00:00[Asia/Hong_Kong]"),
  Temporal.ZonedDateTime.from("2021-08-01T00:00:00[Europe/London]"),
];

dateTimes.sort((a, b) =>
  Temporal.PlainDateTime.compare(a.toPlainDateTime(), b.toPlainDateTime()),
);
console.log(dateTimes.map((d) => d.toString()));
// [ "2021-08-01T00:00:00-04:00[America/New_York]", "2021-08-01T00:00:00+08:00[Asia/Hong_Kong]", "2021-08-01T00:00:00+01:00[Europe/London]" ]

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

Спецификация
Temporal
# sec-temporal.zoneddatetime.compare

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

Десктопные Мобильные Серверные
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
compare
144
144
139
128
preview
144
139
95
No
No
144
No
1.4.0
2.7
26.0.0

Смотри также

  • Temporal.ZonedDateTime
  • Temporal.ZonedDateTime.prototype.equals()

© 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/ZonedDateTime/compare

Spec-Zone.ru

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