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

Temporal.PlainTime.prototype.equals()

Methode

Gibt <code>true</code> zurück, wenn diese Uhrzeit wertmäßig einer anderen Uhrzeit entspricht (alles, was <code>Temporal.PlainTime.from()</code> umwandeln kann), sonst <code>false</code>.

seit JavaScript ES2026 (Temporal); Firefox 139+, Chrome 144+, Safa Kategorie: method-property

Signatur

Temporal.PlainTime.prototype.equals(other)

Beschreibung

Die Methode equals() vergleicht eine Temporal.PlainTime-Instanz mit einer anderen Uhrzeit. Verglichen werden alle Zeitfelder bis auf die Nanosekunde genau: hour, minute, second, millisecond, microsecond und nanosecond. Stimmen alle überein, liefert die Methode true.

Das Argument other muss keine PlainTime-Instanz sein. Die Methode wandelt es vorher wie Temporal.PlainTime.from() um. Deshalb funktionieren auch ISO-8601-Zeichenketten wie "09:30", Objekte mit Zeitfeldern wie { hour: 9, minute: 30 } und Instanzen von Temporal.PlainDateTime oder Temporal.ZonedDateTime. Bei den beiden letzten zählt nur der Uhrzeit-Anteil.

Verwende equals(), wenn du nur wissen willst, ob zwei Uhrzeiten gleich sind. Brauchst du eine Reihenfolge, etwa zum Sortieren, nimm Temporal.PlainTime.compare(). Das liefert -1, 0 oder 1. a.equals(b) ist gleichwertig mit Temporal.PlainTime.compare(a, b) === 0.

Parameter

Name Typ Default Beschreibung
$other Pflicht Temporal.PlainTime | Temporal.PlainDateTime | Temporal.ZonedDateTime | string | object Die Uhrzeit, mit der verglichen wird. Sie wird wie bei Temporal.PlainTime.from() umgewandelt: als ISO-Zeichenkette, als Objekt mit Zeitfeldern oder als Temporal-Objekt.

Rückgabewert

Typ
boolean
Beschreibung
true, wenn alle Zeitfelder bis auf die Nanosekunde übereinstimmen, sonst false.

Beispiele

Zwei Uhrzeiten vergleichen

const start = Temporal.PlainTime.from("09:30:00");
const other = new Temporal.PlainTime(9, 30);
const later = Temporal.PlainTime.from("09:30:00.000000001");

console.log(start.equals(other));
console.log(start.equals(later));
console.log(start === other);
true false false

Vergleich mit Zeichenkette und Objekt

const meeting = Temporal.PlainTime.from({ hour: 14, minute: 15 });

console.log(meeting.equals("14:15"));
console.log(meeting.equals({ hour: 14, minute: 15, second: 0 }));
console.log(meeting.equals("14:15:30"));
true true false

Praxis: Prüfen, ob ein Termin zur Öffnungszeit beginnt

const opening = Temporal.PlainTime.from("08:00");

const appointments = [
  Temporal.PlainDateTime.from("2025-03-10T08:00"),
  Temporal.PlainDateTime.from("2025-03-10T08:45"),
  Temporal.PlainDateTime.from("2025-03-11T08:00")
];

// PlainDateTime wird akzeptiert, verglichen wird nur die Uhrzeit
const firstSlot = appointments.filter((a) => opening.equals(a));
console.log(firstSlot.map((a) => a.toString()));
[ '2025-03-10T08:00:00', '2025-03-11T08:00:00' ]

// Wichtig · Fallstricke

  • Nicht === oder == verwenden: Diese Operatoren vergleichen Objekt-Referenzen. Zwei gleiche Uhrzeiten ergeben damit false. Auch < und > werfen bei Temporal-Objekten einen TypeError, weil valueOf() absichtlich einen Fehler auslöst. Nimm dafür Temporal.PlainTime.compare().
  • Nanosekunden-Genauigkeit: Schon eine Abweichung um 1 ns ergibt false. Willst du etwa auf Minuten genau vergleichen, runde beide Seiten vorher, z. B. mit time.round({ smallestUnit: \"minute\" }).
  • Ungültige Eingaben: Kann other nicht umgewandelt werden (z. B. \"25:00\" oder eine Zeichenkette mit Tippfehler), wirft die Methode einen RangeError oder TypeError. Sie gibt dann nicht einfach false zurück.
  • Zeitzonen: Wird eine ZonedDateTime übergeben, zählt deren lokale Uhrzeit in ihrer eigenen Zeitzone. Es findet keine Umrechnung statt.
  • Kompatibilität: Temporal ist ein neues Standard-Objekt und wird noch nicht von allen Browsern unterstützt. Für ältere Umgebungen gibt es Polyfills wie @js-temporal/polyfill oder temporal-polyfill.