Start · Sprachen · JavaScript · Referenz · Temporal.ZonedDateTime.prototype.millisecond

Temporal.ZonedDateTime.prototype.millisecond

Eigenschaft

Gibt die Millisekunden-Komponente (0–999) der lokalen Uhrzeit eines <code>Temporal.ZonedDateTime</code> als ganze Zahl zurück.

seit JavaScript ES2026 (Temporal); Firefox 139+, Chrome 144+, sons Kategorie: method-property

Signatur

get Temporal.ZonedDateTime.prototype.millisecond

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

Typ
number
Beschreibung
Ganze Zahl von 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
56 123 456 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);
}
2021-07-01T12:34:56.000456789-04:00[America/New_York] 123 RangeError

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));
23:13:20.007

// Wichtig · Fallstricke

  • Nur lesbar: Eine Zuweisung wie zdt.millisecond = 5 ändert nichts und wirft im Strict Mode einen TypeError. Verwende stattdessen with().
  • Kein Gesamtwert: millisecond ist nur der Anteil innerhalb der aktuellen Sekunde und nicht die Zahl der Millisekunden seit der Epoche. Dafür gibt es epochMilliseconds.
  • Überlauf bei with(): Standardmäßig gilt overflow: "constrain". Dabei wird z. B. 1000 stillschweigend auf 999 begrenzt. Mit "reject" gibt es stattdessen einen RangeError.
  • Genauigkeit: Temporal rechnet auf die Nanosekunde genau. Die Anteile unterhalb einer Millisekunde stehen in microsecond und nanosecond, nicht in millisecond.
  • 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/polyfill oder temporal-polyfill.