Signatur
Beschreibung
Mit equals() prüfst du, ob zwei Kalenderdaten den gleichen Wert haben. Da Temporal.PlainDate-Instanzen Objekte sind, liefert === nur dann true, wenn beide Variablen auf dasselbe Objekt zeigen. Für Vergleiche nach Wert brauchst du deshalb equals().
Das Argument other wird vorher intern mit Temporal.PlainDate.from() umgewandelt. Du kannst also auch einen ISO-8601-String wie "2024-03-15", ein Objekt mit Feldern wie { year, month, day } oder eine andere Temporal-Instanz übergeben, zum Beispiel ein Temporal.PlainDateTime (die Uhrzeit wird dann ignoriert).
Verglichen werden das ISO-Datum (Jahr, Monat, Tag) und die Kalender-ID. Zwei Objekte für denselben Tag in verschiedenen Kalendern (z. B. iso8601 und japanese) sind laut equals() nicht gleich. Soll nur die Position auf dem Zeitstrahl zählen, nimm Temporal.PlainDate.compare(a, b) === 0, denn compare() ignoriert den Kalender.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $other Pflicht | Temporal.PlainDate | Temporal.PlainDateTime | Temporal.ZonedDateTime | string | Object | Das Vergleichsdatum. Alles, was Temporal.PlainDate.from() annimmt: eine Temporal-Instanz, einen ISO-8601-String oder ein Objekt mit Datumsfeldern (year, month/monthCode, day, optional calendar). |
Beispiele
Wertvergleich statt Referenzvergleich
const a = Temporal.PlainDate.from("2024-03-15");
const b = Temporal.PlainDate.from({ year: 2024, month: 3, day: 15 });
console.log(a === b); // unterschiedliche Objekte
console.log(a.equals(b)); // gleicher Wert
console.log(a.equals("2024-03-15")); // String wird automatisch umgewandelt
console.log(a.equals("2024-03-16T08:30")); // Uhrzeit wird ignoriert, anderer Tag
Kalender zählt mit: equals() vs. compare()
const iso = Temporal.PlainDate.from("2019-05-01");
const jp = iso.withCalendar("japanese");
console.log(iso.equals(jp)); // Kalender unterschiedlich
console.log(Temporal.PlainDate.compare(iso, jp) === 0); // gleicher Tag
console.log(iso.equals(jp.withCalendar("iso8601"))); // wieder gleich
Praxis: Prüfen, ob ein Datum ein Feiertag ist
const feiertage = ["2024-01-01", "2024-05-01", "2024-10-03", "2024-12-25"]
.map((s) => Temporal.PlainDate.from(s));
const istFeiertag = (datum) => feiertage.some((f) => f.equals(datum));
console.log(istFeiertag("2024-10-03"));
console.log(istFeiertag(Temporal.PlainDate.from("2024-10-04")));
// Wichtig · Fallstricke
- Nicht
===verwenden: Temporal-Objekte sind Referenztypen. Außerdem funktionieren sie nicht als Werte inArray.prototype.includes()oder alsSet-/Map-Schlüssel. Nimm hierequals()oder speicheretoString()als Schlüssel. - Kalender-Falle:
equals()liefertfalse, wenn sich nur der Kalender unterscheidet. Für einen reinen Datumsvergleich nimmTemporal.PlainDate.compare(). - Ausnahmen: Lässt sich
othernicht umwandeln, wirft die Methode einen Fehler, stattfalsezurückzugeben: einenRangeErrorbei ungültigen Strings wie"2024-02-30"oder bei Strings mitZ-Kennung, einenTypeErrorbei fehlenden Feldern oder falschen Typen. Unsichere Eingaben solltest du vorher prüfen oder intry…catcheinschließen. - Verfügbarkeit: Temporal ist neu. Firefox unterstützt es ab Version 139, Chromium-Browser ab Version 144. Safari und ältere Node.js-Versionen unterstützen es noch nicht. Für breite Unterstützung brauchst du einen Polyfill wie
@js-temporal/polyfillodertemporal-polyfill.