Temporal.PlainDate.compare()
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
The Temporal.PlainDate.compare()
static method returns a number (-1, 0, or 1) indicating whether the first date comes before, is the same as, or comes after the second date. Equivalent to comparing the year, month, and day fields of the underlying ISO 8601 dates.
Syntax
Temporal.PlainDate.compare(date1, date2)
Parameters
date1
-
A string, an object, or a
Temporal.PlainDate
instance representing the first date to compare. It is converted to aTemporal.PlainDate
object using the same algorithm asTemporal.PlainDate.from()
. date2
-
The second date to compare, converted to a
Temporal.PlainDate
object using the same algorithm asdate1
.
Return value
Returns -1
if date1
comes before date2
, 0
if they are the same, and 1
if date2
comes after. They are compared by their underlying date values, ignoring their calendars.
Examples
Using Temporal.PlainDate.compare()
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
Comparing dates in different calendars
const date1 = Temporal.PlainDate.from({ year: 2021, month: 8, day: 1 });
const date2 = Temporal.PlainDate.from({
year: 2021,
month: 8,
day: 1,
calendar: "islamic",
});
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-18[u-ca=islamic]"
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
Sorting an array of dates
The purpose of this compare()
function is to act as a comparator to be passed to Array.prototype.sort()
and related functions.
const dates = [
Temporal.PlainDate.from({ year: 2021, month: 8, day: 1 }),
Temporal.PlainDate.from({
year: 2021,
month: 8,
day: 1,
calendar: "islamic",
}),
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-18[u-ca=islamic]" ]
Specifications
Specification |
---|
Temporal proposal # sec-temporal.plaindate.compare |
Browser compatibility
Report problems with this compatibility data on GitHubdesktop | mobile | server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
compare |
Legend
Tip: you can click/tap on a cell for more information.
- No support
- No support
- Experimental. Expect behavior to change in the future.
- See implementation notes.
- User must explicitly enable this feature.