Start · Sprachen · JavaScript · Referenz · Temporal.PlainDate.prototype.equals()

Temporal.PlainDate.prototype.equals()

Methode

Gibt <code>true</code> zurück, wenn dieses <code>Temporal.PlainDate</code> dasselbe Datum im selben Kalender wie <code>other</code> darstellt, sonst <code>false</code>.

seit JavaScript Temporal (TC39-Proposal); Firefox 139+, Chrome/Edg Kategorie: method-property

Signatur

Temporal.PlainDate.prototype.equals(other)

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
false true true false

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
false true true

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")));
true false

// Wichtig · Fallstricke

  • Nicht === verwenden: Temporal-Objekte sind Referenztypen. Außerdem funktionieren sie nicht als Werte in Array.prototype.includes() oder als Set-/Map-Schlüssel. Nimm hier equals() oder speichere toString() als Schlüssel.
  • Kalender-Falle: equals() liefert false, wenn sich nur der Kalender unterscheidet. Für einen reinen Datumsvergleich nimm Temporal.PlainDate.compare().
  • Ausnahmen: Lässt sich other nicht umwandeln, wirft die Methode einen Fehler, statt false zurückzugeben: einen RangeError bei ungültigen Strings wie "2024-02-30" oder bei Strings mit Z-Kennung, einen TypeError bei fehlenden Feldern oder falschen Typen. Unsichere Eingaben solltest du vorher prüfen oder in try…catch einschließ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/polyfill oder temporal-polyfill.