Temporal.ZonedDateTime.compare()

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

實驗性: 這是一項實驗性技術
在生產中使用此技術之前,請仔細檢查瀏覽器相容性表格

Temporal.ZonedDateTime.compare() 靜態方法返回一個數字(-1、0 或 1),指示第一個日期時間是早於、等於還是晚於第二個日期時間。它等效於比較兩個日期時間的 epochNanoseconds

語法

js
Temporal.ZonedDateTime.compare(dateTime1, dateTime2)

引數

dateTime1

一個字串、一個物件或一個 Temporal.ZonedDateTime 例項,表示要比較的第一個日期時間。它使用與 Temporal.ZonedDateTime.from() 相同的演算法轉換為 Temporal.ZonedDateTime 物件。

dateTime2

要比較的第二個日期時間,使用與 dateTime1 相同的演算法轉換為 Temporal.ZonedDateTime 物件。

返回值

如果 dateTime1 早於 dateTime2,則返回 -1;如果它們相同,則返回 0;如果 dateTime1 晚於 dateTime2,則返回 1。它們透過其底層瞬時值進行比較,忽略其日曆或時區。

示例

使用 Temporal.ZonedDateTime.compare()

js
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() 和相關函式。

js
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]" ]

請注意,它們是根據其瞬時值進行比較的。在極少數情況下,如果您想根據它們的掛鐘時間進行比較,請先將它們轉換為 PlainDateTime

js
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

瀏覽器相容性

另見