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 |
浏览器兼容性
加载中…