Signatur
Beschreibung
Die Accessor-Eigenschaft microsecond gibt eine ganze Zahl von 0 bis 999 zurück. Sie steht für den Mikrosekunden-Anteil (10-6 Sekunden) der Uhrzeit. Temporal zerlegt den Sekundenbruchteil in drei Felder: millisecond (Stellen 1–3), microsecond (Stellen 4–6) und nanosecond (Stellen 7–9). Bei 12:34:56.123456789 ist microsecond also 456 und nicht 123456.
Der Wert bezieht sich auf die Wanduhrzeit in der Zeitzone der Instanz. Weil Zeitzonen-Offsets in der Praxis immer ganze Sekunden sind (meist sogar ganze Minuten), ist der Mikrosekunden-Anteil in jeder Zeitzone gleich. Er entspricht dem Anteil des zugrunde liegenden epochNanoseconds-Werts.
Die Eigenschaft hat nur einen Getter, sie ist also schreibgeschützt. Temporal.ZonedDateTime ist unveränderlich (immutable). Um den Wert zu ändern, erzeugen Sie mit with({ microsecond: … }) eine neue Instanz. Mit round() runden Sie auf ganze Mikrosekunden.
Typische Einsatzfälle sind hochauflösende Zeitstempel, etwa aus Datenbanken wie PostgreSQL (timestamptz mit Mikrosekunden-Genauigkeit), aus Logdateien oder aus Messdaten. Sie können damit Zeitangaben formatieren, vergleichen oder auf eine bestimmte Genauigkeit kürzen.
Rückgabewert
0 bis 999: der Mikrosekunden-Anteil der Uhrzeit, ohne Milli- und Nanosekunden.Beispiele
Sekundenbruchteile auslesen
const zdt = Temporal.ZonedDateTime.from(
"2021-07-01T12:34:56.123456789-04:00[America/New_York]"
);
console.log(zdt.millisecond); // Stellen 1–3
console.log(zdt.microsecond); // Stellen 4–6
console.log(zdt.nanosecond); // Stellen 7–9
Mikrosekunden mit with() ändern
const zdt = Temporal.ZonedDateTime.from(
"2021-07-01T12:34:56.123456789-04:00[America/New_York]"
);
// Neue Instanz – das Original bleibt unverändert
const ohneMikro = zdt.with({ microsecond: 0 });
console.log(ohneMikro.toString());
console.log(zdt.microsecond);
// zdt.microsecond = 0; // TypeError im Strict Mode, da nur Getter
Datenbank-Zeitstempel auf Mikrosekunden runden
const messung = Temporal.ZonedDateTime.from(
"2024-03-15T08:00:00.987654321+01:00[Europe/Berlin]"
);
// PostgreSQL speichert nur Mikrosekunden-Genauigkeit
const gerundet = messung.round({ smallestUnit: "microsecond" });
console.log(gerundet.microsecond);
console.log(gerundet.nanosecond);
console.log(gerundet.toString());
Mikrosekunden innerhalb der Sekunde berechnen
const zdt = Temporal.ZonedDateTime.from(
"2024-01-01T00:00:00.042017+00:00[UTC]"
);
// Gesamte Mikrosekunden seit Beginn der Sekunde
const mikroInSekunde = zdt.millisecond * 1000 + zdt.microsecond;
console.log(mikroInSekunde);
// Wichtig · Fallstricke
- Nur ein Teil des Sekundenbruchteils:
microsecondliefert nie mehr als999. Wenn Sie alle Mikrosekunden seit Beginn der Sekunde brauchen, rechnen Siemillisecond * 1000 + microsecond. - Schreibgeschützt: Eine Zuweisung wirkt nicht und wirft im Strict Mode einen
TypeError. Nutzen Sie stattdessenwith(). Beiwith()wird ein Wert über 999 standardmäßig auf 999 begrenzt (overflow: "constrain"). Mitoverflow: "reject"wird stattdessen einRangeErrorgeworfen. - Timer-Genauigkeit: Die Werte von
Temporal.Now.zonedDateTimeISO()sind in Browsern aus Datenschutzgründen (Schutz vor Fingerprinting und Timing-Angriffen) oft vergröbert.microsecondist dort daher häufig0oder in festen Schritten gerundet. - Kompatibilität: Temporal ist ziemlich neu. Es läuft in Firefox ab Version 139 und in Chromium-Browsern ab Version 144, aber noch nicht in Safari. Für ältere Umgebungen gibt es die Polyfills
@js-temporal/polyfillodertemporal-polyfill. - Das ältere
Date-Objekt kennt nur Millisekunden. Wenn Sie es nach Temporal umwandeln, etwa überTemporal.Instant.fromEpochMilliseconds(), istmicrosecondimmer0.