Temporal.PlainDate.compare()

可用性有限

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

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

Temporal.PlainDate.compare() 靜態方法返回一個數字(-1、0 或 1),表示第一個日期是早於、等於還是晚於第二個日期。相當於比較底層 ISO 8601 日期的年、月和日欄位。

語法

js
Temporal.PlainDate.compare(date1, date2)

引數

date1

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

date2

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

返回值

如果 date1 早於 date2,則返回 -1;如果它們相同,則返回 0;如果 date1 晚於 date2,則返回 1。它們透過底層的日期值進行比較,忽略它們的日曆。

示例

使用 Temporal.PlainDate.compare()

js
const date1 = Temporal.PlainDate.from("2021-08-01");
const date2 = Temporal.PlainDate.from("2021-08-02");
console.log(Temporal.PlainDate.compare(date1, date2)); // -1

const date3 = Temporal.PlainDate.from("2021-07-31");
console.log(Temporal.PlainDate.compare(date1, date3)); // 1

比較不同日曆中的日期

js
const date1 = Temporal.PlainDate.from({ year: 2021, month: 8, day: 1 });
const date2 = Temporal.PlainDate.from({
  year: 2021,
  month: 8,
  day: 1,
  calendar: "islamic-umalqura",
});
const date3 = Temporal.PlainDate.from({
  year: 2021,
  month: 8,
  day: 1,
  calendar: "hebrew",
});
console.log(date1.toString()); // "2021-08-01"
console.log(date2.toString()); // "2582-12-17[u-ca=islamic-umalqura]"
console.log(date3.toString()); // "-001739-04-06[u-ca=hebrew]"
console.log(Temporal.PlainDate.compare(date1, date2)); // -1
console.log(Temporal.PlainDate.compare(date1, date3)); // 1

對日期陣列進行排序

compare() 函式的目的是作為比較器,傳遞給 Array.prototype.sort() 和相關函式。

js
const dates = [
  Temporal.PlainDate.from({ year: 2021, month: 8, day: 1 }),
  Temporal.PlainDate.from({
    year: 2021,
    month: 8,
    day: 1,
    calendar: "islamic-umalqura",
  }),
  Temporal.PlainDate.from({ year: 2021, month: 8, day: 1, calendar: "hebrew" }),
];

dates.sort(Temporal.PlainDate.compare);
console.log(dates.map((d) => d.toString()));
// [ "-001739-04-06[u-ca=hebrew]", "2021-08-01", "2582-12-17[u-ca=islamic-umalqura]" ]

規範

規範
Temporal
# sec-temporal.plaindate.compare

瀏覽器相容性

另見