Start · Sprachen · JavaScript · Referenz · new Temporal.PlainTime()

new Temporal.PlainTime()

Methode

Erzeugt ein <code>Temporal.PlainTime</code>-Objekt, also eine Uhrzeit ohne Datum und ohne Zeitzone, auf die Nanosekunde genau.

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

Signatur

new Temporal.PlainTime(hour, minute, second, millisecond, microsecond, nanosecond)

Beschreibung

Der Konstruktor Temporal.PlainTime() erzeugt eine reine Uhrzeit wie „14:30:00“. Ein Datum, eine Zeitzone oder ein Kalender gehören nicht dazu. Das passt für wiederkehrende Zeitangaben wie Öffnungszeiten, Weckzeiten, Beginn einer Schicht oder Zeitfenster in Fahrplänen, bei denen der konkrete Tag keine Rolle spielt.

Alle sechs Komponenten sind optional und haben den Standardwert 0. Der Konstruktor ist streng: Ein Wert außerhalb des gültigen Bereichs (z. B. hour = 24 oder minute = 60) löst einen RangeError aus. Der Wert wird also nicht stillschweigend begrenzt oder in die nächste Einheit übertragen. Nachkommastellen werden abgeschnitten.

In den meisten Fällen ist Temporal.PlainTime.from() die bessere Wahl. Diese Methode nimmt ISO-Strings ("14:30") oder Objekte ({ hour: 14, minute: 30 }) entgegen und kann Werte über die Option overflow: "constrain" auf den gültigen Bereich begrenzen. Den Konstruktor nimmt man, wenn die einzelnen Zahlen schon geprüft vorliegen.

Ein PlainTime-Objekt ist unveränderlich. Methoden wie add(), with() oder round() geben immer ein neues Objekt zurück. Rechnungen laufen über Mitternacht hinweg im Kreis weiter, 23:00 plus 2 Stunden ergibt also 01:00.

Parameter

Name Typ Default Beschreibung
$hour number 0 Stunde, ganzzahlig von 0 bis 23.
$minute number 0 Minute, 0 bis 59.
$second number 0 Sekunde, 0 bis 59. Schaltsekunden (60) sind nicht erlaubt.
$millisecond number 0 Millisekunde, 0 bis 999.
$microsecond number 0 Mikrosekunde, 0 bis 999.
$nanosecond number 0 Nanosekunde, 0 bis 999.

Rückgabewert

Typ
Temporal.PlainTime
Beschreibung
Ein neues, unveränderliches Temporal.PlainTime-Objekt mit den angegebenen Zeitkomponenten.

Beispiele

Uhrzeiten erzeugen und ausgeben

const start = new Temporal.PlainTime(14, 30);
const genau = new Temporal.PlainTime(9, 5, 3, 250);
const mitternacht = new Temporal.PlainTime();

console.log(start.toString());
console.log(genau.toString());
console.log(mitternacht.toString());
console.log(start.hour, start.minute);
14:30:00 09:05:03.25 00:00:00 14 30

Schichtende berechnen (über Mitternacht hinweg)

const schichtBeginn = new Temporal.PlainTime(22, 0);
const schichtEnde = schichtBeginn.add({ hours: 8, minutes: 30 });

console.log(`Schicht: ${schichtBeginn} – ${schichtEnde}`);
Schicht: 22:00:00 – 06:30:00

Prüfen, ob ein Geschäft geöffnet ist

const oeffnet = new Temporal.PlainTime(8, 0);
const schliesst = new Temporal.PlainTime(18, 30);

const istGeoeffnet = (zeit) =>
  Temporal.PlainTime.compare(zeit, oeffnet) >= 0 &&
  Temporal.PlainTime.compare(zeit, schliesst) < 0;

console.log(istGeoeffnet(new Temporal.PlainTime(12, 15)));
console.log(istGeoeffnet(new Temporal.PlainTime(19, 0)));
// Aktuelle lokale Uhrzeit:
console.log(istGeoeffnet(Temporal.Now.plainTimeISO()));
true false (abhängig von der aktuellen Uhrzeit)

Konstruktor ist streng – from() kann begrenzen

try {
  new Temporal.PlainTime(24, 0);
} catch (err) {
  console.log(err.name);
}

const begrenzt = Temporal.PlainTime.from(
  { hour: 25, minute: 75 },
  { overflow: "constrain" }
);
console.log(begrenzt.toString());
RangeError 23:59:00

// Wichtig · Fallstricke

  • Browser-Unterstützung: Temporal ist neu und kommt aus einem TC39-Proposal. Firefox (ab 139) und Chromium-Browser (ab 144) unterstützen es, Safari noch nicht. Für ältere Umgebungen gibt es Polyfills wie @js-temporal/polyfill oder temporal-polyfill. Vor dem Einsatz sollte man die Unterstützung prüfen, z. B. mit typeof Temporal !== "undefined".
  • Nur mit new: Wird Temporal.PlainTime() ohne new aufgerufen, gibt es einen TypeError.
  • Keine Überträge: new Temporal.PlainTime(10, 90) ergibt nicht 11:30, sondern einen RangeError. Für Überträge rechnet man mit add(), z. B. new Temporal.PlainTime(10).add({ minutes: 90 }).
  • Keine Strings: Der Konstruktor parst keine Uhrzeiten wie "14:30". Dafür gibt es Temporal.PlainTime.from("14:30").
  • Nicht mit </> vergleichen: Der Vergleich per < oder > löst einen TypeError aus, weil valueOf() absichtlich einen Fehler wirft. Zum Vergleichen nimmt man Temporal.PlainTime.compare() oder equals().
  • Die Uhrzeit hat weder Zeitzone noch Datum, Zeitumstellungen werden also nicht berücksichtigt. Für einen konkreten Zeitpunkt kombiniert man sie z. B. mit Temporal.PlainDate.prototype.toPlainDateTime() und dann mit toZonedDateTime().