Signatur
Beschreibung
Die Zugriffseigenschaft millisecond liefert den Millisekundenanteil (10-3 Sekunde) der Uhrzeit eines Temporal.ZonedDateTime-Objekts. Der Wert ist immer eine ganze Zahl von 0 bis 999. Feinere Anteile liegen in den getrennten Eigenschaften microsecond und nanosecond.
Die Eigenschaft ist schreibgeschützt. Einen setter gibt es nicht. Temporal.ZonedDateTime ist unveränderlich (immutable): Wenn du die Millisekunden ändern willst, erzeugst du mit with({ millisecond }) ein neues Objekt.
Brauchbar ist die Eigenschaft für eigene Zeitstempel-Formate wie in Logdateien, zum Prüfen, ob eine Uhrzeit auf volle Sekunden fällt, oder zum Zerlegen eines Zeitpunkts in einzelne Felder. Weil die Offsets von Zeitzonen in der Praxis nie Bruchteile einer Sekunde enthalten, ist der Millisekundenwert in jeder Zeitzone gleich dem Wert in UTC.
Rückgabewert
0 bis 999: der Millisekundenanteil der Uhrzeit.Beispiele
Unterteilung einer Sekunde auslesen
const zdt = Temporal.ZonedDateTime.from(
"2021-07-01T12:34:56.123456789[America/New_York]"
);
console.log(zdt.second); // 56
console.log(zdt.millisecond); // 123
console.log(zdt.microsecond); // 456
console.log(zdt.nanosecond); // 789
Millisekunden mit with() ändern
const zdt = Temporal.ZonedDateTime.from(
"2021-07-01T12:34:56.123456789[America/New_York]"
);
// Neues Objekt erzeugen, das Original bleibt unverändert
const ohneMs = zdt.with({ millisecond: 0 });
console.log(ohneMs.toString());
console.log(zdt.millisecond);
// Werte außerhalb des Bereichs: mit overflow "reject" wird ein Fehler ausgelöst
try {
zdt.with({ millisecond: 1000 }, { overflow: "reject" });
} catch (e) {
console.log(e.name);
}
Log-Zeitstempel mit Millisekunden formatieren
const logZeit = (epochMs, zone = "Europe/Berlin") => {
const z = Temporal.Instant.fromEpochMilliseconds(epochMs)
.toZonedDateTimeISO(zone);
const pad = (n, l = 2) => String(n).padStart(l, "0");
return `${pad(z.hour)}:${pad(z.minute)}:${pad(z.second)}.${pad(z.millisecond, 3)}`;
};
console.log(logZeit(1700000000007));
// Wichtig · Fallstricke
- Nur lesbar: Eine Zuweisung wie
zdt.millisecond = 5ändert nichts und wirft im Strict Mode einenTypeError. Verwende stattdessenwith(). - Kein Gesamtwert:
millisecondist nur der Anteil innerhalb der aktuellen Sekunde und nicht die Zahl der Millisekunden seit der Epoche. Dafür gibt esepochMilliseconds. - Überlauf bei
with(): Standardmäßig giltoverflow: "constrain". Dabei wird z. B.1000stillschweigend auf999begrenzt. Mit"reject"gibt es stattdessen einenRangeError. - Genauigkeit: Temporal rechnet auf die Nanosekunde genau. Die Anteile unterhalb einer Millisekunde stehen in
microsecondundnanosecond, nicht inmillisecond. - Kompatibilität: Temporal gibt es erst seit Kurzem in Browsern (Firefox ab 139, Chromium-basierte Browser ab 144). Safari und ältere Node.js-Versionen brauchen einen Polyfill wie
@js-temporal/polyfillodertemporal-polyfill.