Signatur
Beschreibung
Die Accessor-Eigenschaft microsecond gibt den Mikrosekundenanteil der Uhrzeit eines Temporal.PlainDateTime zurück. Der Wert liegt immer zwischen 0 und 999. Er steht zwischen millisecond (10-3 s) und nanosecond (10-9 s). Die vollständigen Sekundenbruchteile ergeben sich also erst, wenn man alle drei Komponenten zusammennimmt.
Die Eigenschaft ist nur lesbar, weil Temporal-Objekte unveränderlich sind. Einen neuen Mikrosekundenwert setzt man mit with({ microsecond: … }). Dabei entsteht eine neue Instanz, das ursprüngliche Objekt bleibt unverändert.
Man braucht die Eigenschaft vor allem bei hochauflösenden Zeitstempeln, etwa aus Datenbanken wie PostgreSQL (timestamp mit Mikrosekunden), aus Messdaten oder Protokolldateien. Das klassische Date kann das nicht darstellen, weil es nur auf die Millisekunde genau ist.
Rückgabewert
0 bis 999: die Mikrosekunden innerhalb der aktuellen Millisekunde.Beispiele
Mikrosekunden auslesen
const dt = Temporal.PlainDateTime.from("2024-03-15T14:30:45.123456789");
console.log(dt.millisecond); // 123
console.log(dt.microsecond); // 456
console.log(dt.nanosecond); // 789
Mikrosekunden per with() ändern
const dt = Temporal.PlainDateTime.from("2024-03-15T14:30:45.123456");
const neu = dt.with({ microsecond: 0 });
console.log(dt.toString()); // Original bleibt unverändert
console.log(neu.toString());
Datenbank-Zeitstempel mit Mikrosekunden formatieren
// z. B. PostgreSQL-Timestamp mit 6 Nachkommastellen
const raw = "2024-11-02 08:15:03.004271";
const dt = Temporal.PlainDateTime.from(raw.replace(" ", "T"));
const micros = dt.millisecond * 1000 + dt.microsecond;
console.log(`Sekunde ${dt.second}, Bruchteil: ${String(micros).padStart(6, "0")} µs`);
Auf Mikrosekunden runden
const dt = Temporal.PlainDateTime.from("2024-03-15T14:30:45.123456789");
const gerundet = dt.round({ smallestUnit: "microsecond" });
console.log(gerundet.microsecond); // 457 (789 ns wird aufgerundet)
console.log(gerundet.nanosecond); // 0
// Wichtig · Fallstricke
- Nur ein Teil des Bruchteils:
microsecondenthält nicht die Millisekunden. Aus.123456ergibt sichmicrosecond === 456, nicht123456. Die Gesamtzahl der Mikrosekunden erhält man mitmillisecond * 1000 + microsecond. - Nur lesbar: Eine Zuweisung wie
dt.microsecond = 5hat keine Wirkung und wirft im Strict Mode einenTypeError. Stattdessenwith()verwenden. - Werte außerhalb 0–999:
with({ microsecond: 1500 })wird standardmäßig auf999begrenzt (overflow: \"constrain\"). Mit{ overflow: \"reject\" }wird stattdessen einRangeErrorgeworfen. - Konvertierung zu
Date: Beim Umwandeln in einDategehen die Mikrosekunden verloren, weilDatenur Millisekunden speichert. - Kompatibilität: Temporal ist erst in neueren Browsern verfügbar (Firefox 139+, Chrome 144+). Safari und ältere Node.js-Versionen unterstützen es noch nicht nativ. Für den produktiven Einsatz eignet sich ein Polyfill wie
@js-temporal/polyfillodertemporal-polyfill.