Signatur
Beschreibung
Die Accessor-Eigenschaft nanosecond gibt den Nanosekunden-Anteil der Uhrzeit eines Temporal.PlainDateTime-Objekts zurück. Der Wert liegt immer zwischen 0 und 999. Er enthält also nicht die gesamten Nanosekunden innerhalb der Sekunde, sondern nur die letzten drei Stellen. Die höheren Stellen stehen in millisecond (10-3 s) und microsecond (10-6 s).
Die gesamte Sekundenbruchteil-Angabe setzt sich so zusammen: millisecond * 1_000_000 + microsecond * 1_000 + nanosecond. Diese Aufteilung hilft, wenn du Zeitstempel mit hoher Auflösung verarbeitest, etwa aus Messdaten, Logs oder Datenbanken mit Nanosekunden-Genauigkeit.
Die Eigenschaft kann nur gelesen werden. Weil Temporal-Objekte unveränderlich sind, erzeugst du einen geänderten Wert mit with({ nanosecond: … }). Diese Methode gibt eine neue Instanz zurück. Mit round() kannst du die Nanosekunden auf eine gröbere Einheit runden.
Rückgabewert
0 bis 999: die Nanosekunden-Komponente der Uhrzeit.Beispiele
Nanosekunden aus einem ISO-String lesen
const dt = Temporal.PlainDateTime.from("2024-03-15T10:30:45.123456789");
console.log(dt.millisecond); // 123
console.log(dt.microsecond); // 456
console.log(dt.nanosecond); // 789
Gesamten Sekundenbruchteil in Nanosekunden berechnen
const dt = Temporal.PlainDateTime.from("2024-03-15T10:30:45.000250075");
const subSecondNs =
dt.millisecond * 1_000_000 + dt.microsecond * 1_000 + dt.nanosecond;
console.log(subSecondNs); // 250075
Nanosekunden ändern oder abschneiden (unveränderlich)
const dt = new Temporal.PlainDateTime(2024, 3, 15, 10, 30, 45, 0, 0, 500);
const geaendert = dt.with({ nanosecond: 42 });
console.log(geaendert.nanosecond); // 42
console.log(dt.nanosecond); // 500 – Original bleibt unverändert
// Auf Mikrosekunden runden
const gerundet = dt.round({ smallestUnit: "microsecond" });
console.log(gerundet.microsecond, gerundet.nanosecond); // 1 0
// Wichtig · Fallstricke
- Nur 0–999:
nanosecondist nicht die Gesamtzahl der Nanosekunden seit Sekundenbeginn. Für den vollen Bruchteil musst dumillisecondundmicrosecondmit einrechnen. - Nur lesbar: Eine Zuweisung wie
dt.nanosecond = 5wird im nicht-strikten Modus stillschweigend ignoriert und löst im strikten Modus einenTypeErroraus. Verwende stattdessenwith(). - Werte außerhalb des Bereichs:
with({ nanosecond: 1000 })begrenzt den Wert standardmäßig auf 999 (overflow: \"constrain\"). Mit{ overflow: \"reject\" }wird stattdessen einRangeErrorausgelöst. - Keine Nanosekunden-Genauigkeit aus
Date: Werte, die ausDateoderTemporal.Nowstammen, haben je nach Plattform eine geringere tatsächliche Auflösung. Dann istnanosecondoft0. - Kompatibilität: Temporal ist noch nicht in allen Browsern verfügbar (bisher Firefox 139+ und Chrome 144+; Safari und ältere Node.js-Versionen fehlen). Für den produktiven Einsatz eignet sich ein Polyfill wie
@js-temporal/polyfillodertemporal-polyfill.