Signatur
Beschreibung
Temporal.Now.plainDateTimeISO() liest die aktuelle Systemzeit aus und rechnet sie in die „Wanduhrzeit“ einer Zeitzone um. Das Ergebnis ist ein Temporal.PlainDateTime, also Datum und Uhrzeit (bis auf die Nanosekunde genau) ohne Zeitzonen- oder Offset-Angabe. Als Kalender wird immer iso8601 verwendet.
Die Methode eignet sich, wenn man die lokale Zeit anzeigen, formatieren oder mit anderen „zeitzonenlosen“ Werten vergleichen will, z. B. „Ist es schon nach 18 Uhr?“ oder „Welches Datum und welche Uhrzeit sind es gerade in Tokio?“. Ohne Argument wird die Zeitzone der Umgebung benutzt (siehe Temporal.Now.timeZoneId()).
Weil ein PlainDateTime nicht weiß, zu welcher Zeitzone es gehört, taugt es nur bedingt für Rechnungen über Sommerzeitwechsel hinweg oder zum Speichern eines genauen Zeitpunkts. Dafür nimmt man besser Temporal.Now.zonedDateTimeISO() oder Temporal.Now.instant().
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $timeZone | string | Temporal.ZonedDateTime | Temporal.Now.timeZoneId() | Zeitzone, in die umgerechnet wird: ein IANA-Bezeichner wie "Europe/Berlin", "UTC", ein fester Offset wie "+05:30" oder ein Temporal.ZonedDateTime, dessen Zeitzone übernommen wird. Fehlt der Wert, wird die Systemzeitzone verwendet. |
Rückgabewert
Temporal.PlainDateTime mit dem aktuellen Datum und der aktuellen Uhrzeit in der gewählten Zeitzone, im ISO-8601-Kalender.Beispiele
Aktuelle lokale Zeit auslesen
const jetzt = Temporal.Now.plainDateTimeISO();
console.log(jetzt.toString());
console.log(`${jetzt.day}.${jetzt.month}.${jetzt.year}, ${jetzt.hour}:${String(jetzt.minute).padStart(2, '0')} Uhr`);
Wanduhrzeit in anderen Zeitzonen
const zonen = ['Europe/Berlin', 'America/New_York', 'Asia/Tokyo', 'UTC'];
for (const zone of zonen) {
const zeit = Temporal.Now.plainDateTimeISO(zone);
console.log(zone.padEnd(18), zeit.toString({ smallestUnit: 'minute' }));
}
Prüfen, ob Geschäftszeiten sind
const istGeoeffnet = (zone = 'Europe/Berlin') => {
const jetzt = Temporal.Now.plainDateTimeISO(zone);
const werktag = jetzt.dayOfWeek <= 5; // 1 = Montag … 7 = Sonntag
const oeffnung = Temporal.PlainTime.from('09:00');
const schluss = Temporal.PlainTime.from('18:00');
const uhrzeit = jetzt.toPlainTime();
return werktag &&
Temporal.PlainTime.compare(uhrzeit, oeffnung) >= 0 &&
Temporal.PlainTime.compare(uhrzeit, schluss) < 0;
};
console.log(istGeoeffnet() ? 'Wir sind erreichbar.' : 'Außerhalb der Geschäftszeiten.');
Countdown bis zu einem lokalen Termin
const feierabend = Temporal.Now.plainDateTimeISO()
.with({ hour: 17, minute: 0, second: 0, millisecond: 0, microsecond: 0, nanosecond: 0 });
const rest = Temporal.Now.plainDateTimeISO().until(feierabend, { largestUnit: 'hour', smallestUnit: 'minute' });
console.log(`Noch ${rest.hours} h ${rest.minutes} min bis Feierabend`);
// Wichtig · Fallstricke
- Kompatibilität: Temporal ist noch neu. Firefox (ab 139) und Chrome (ab 144) unterstützen es, Safari und ältere Node.js-Versionen nicht. Für den Produktiveinsatz den Polyfill
@js-temporal/polyfillodertemporal-polyfilleinbinden oder vorher mittypeof Temporal !== 'undefined'prüfen. - Keine Zeitzone im Ergebnis: Der zurückgegebene Wert „vergisst“ die Zeitzone. Rechnungen wie
add({ hours: 24 })beachten keine Sommerzeitumstellung. Für genaue Zeitpunkte besserTemporal.Now.zonedDateTimeISO()verwenden. - Eine ungültige Zeitzonen-Angabe (z. B.
\"Europe/Berlinn\") wirft einenRangeError, ein falscher Typ (z. B. eine Zahl) einenTypeError. - Browser können die Genauigkeit der Zeit aus Datenschutzgründen senken (Schutz vor Timing-Angriffen und Fingerprinting). Die Nanosekunden sind daher meist nicht wirklich genau.
- Jeder Aufruf liest die Uhr neu aus. Wer mehrere Werte aus derselben „Jetzt“-Zeit braucht, sollte das Ergebnis einmal in einer Variable speichern.
- Für einen anderen Kalender als ISO wandelt man das Ergebnis mit
.withCalendar('japanese')o. Ä. um.