← Alle Beiträge

Epoch-Millisekunden in Datum: 13-stellige Timestamps und Long-Werte umwandeln

Ein Guide zum Umwandeln von Epoch-Millisekunden in lesbare Daten. Behandelt 13-stellige Timestamps, JavaScript-Date, Java-Long-Werte, Millisekunden vs. Sekunden und warum die falsche Einheit 1970- oder ferne Zukunftsdaten erzeugt.

Was Epoch-Millisekunden sind

Epoch-Millisekunden zählen die Millisekunden seit dem 1. Januar 1970 um 00:00:00 UTC. Sie nutzen dieselbe Unix-Epoch wie Unix-Sekunden, aber mit drei zusätzlichen Stellen Präzision. Ein moderner Epoch-Millisekunden-Wert hat meist 13 Stellen, etwa 1700000000000.

So wandelt man Millis in ein Datum um

Liegt der Wert bereits in Millisekunden vor, kann JavaScript Date ihn direkt lesen. Erwartet das empfangende Tool Sekunden, teile zuerst durch 1000. Der Hauptfehler ist das Multiplizieren oder Teilen an der falschen Grenze.

  • JavaScript: new Date(1700000000000).toISOString()
  • Milliseconds to seconds: Math.floor(1700000000000 / 1000)
  • Seconds to milliseconds: 1700000000 * 1000
  • Java Instant: Instant.ofEpochMilli(1700000000000L)
  • Python: datetime.fromtimestamp(ms / 1000, tz=timezone.utc)

Long zu Datum in Java und Datenbanken

Suchen nach „long zu Datum“ kommen oft aus Java, Kotlin, Android oder Datenbank-Exporten, wo ein Timestamp als 64-Bit-Ganzzahl gespeichert ist. Der Wert kann Epoch-Millisekunden sein, aber auch Sekunden, Mikro- oder Nanosekunden. Prüfe die Stellenzahl vor dem Umwandeln.

  • 10 Stellen: wahrscheinlich Unix-Sekunden
  • 13 Stellen: wahrscheinlich Unix-Millisekunden oder Java-long-Millisekunden
  • 16 Stellen: wahrscheinlich Mikrosekunden
  • 19 Stellen: wahrscheinlich Nanosekunden
  • Benenne Spalten immer mit Einheit, etwa created_at_ms

Warum Millisekunden zu seltsamen Daten werden

Ein Millisekunden-Wert, als Sekunden behandelt, wird zu einem extrem fernen Zukunftsdatum. Ein Sekunden-Wert, als Millisekunden behandelt, wird zu einem Datum nahe Januar 1970. Die Stellen sind die schnellste Diagnose.

  • 1700000000000 als Millisekunden = 2023-11-14 22:13:20 UTC
  • 1700000000000 als Sekunden = etwa Jahr 55840, je nach Bibliothek
  • 1700000000 als Sekunden = 2023-11-14 22:13:20 UTC
  • 1700000000 als Millisekunden = 1970-01-20 16:13:20 UTC

FAQ zu Epoch-Millisekunden

A milliseconds value treated as seconds becomes an extremely far-future date. A seconds value treated as milliseconds becomes a date near January 1970. The digits are the quickest diagnostic.

  • 1700000000000 as milliseconds = 2023-11-14 22:13:20 UTC
  • 1700000000000 as seconds = year 55840 range, depending on the library
  • 1700000000 as seconds = 2023-11-14 22:13:20 UTC
  • 1700000000 as milliseconds = 1970-01-20 16:13:20 UTC

Cross-language patterns for ms-to-date

The conversion is structurally the same in every language — divide by 1000 (carefully) or use a millisecond-aware constructor. The details that bite are precision loss and naming.

  • JavaScript: new Date(1700000000000) — no division needed, Date is millisecond-based
  • Python: datetime.fromtimestamp(1700000000000 / 1000, tz=timezone.utc) — float division, watch for precision loss
  • Java: Instant.ofEpochMilli(1700000000000L) — exact millisecond precision preserved
  • PostgreSQL: SELECT to_timestamp(1700000000000.0 / 1000) — to_timestamp expects seconds, not milliseconds
  • SQLite: SELECT datetime(1700000000000 / 1000, 'unixepoch') — integer division drops fractional seconds
  • Go: time.UnixMilli(1700000000000) — added in Go 1.17 specifically to avoid the seconds-vs-ms mix-up
  • Ruby: Time.at(0, 1700000000000, :millisecond) for exact ms precision
  • C#: DateTimeOffset.FromUnixTimeMilliseconds(1700000000000L).UtcDateTime

Related articles

FAQ

Is epoch time in ms the same as Unix timestamp?
It uses the same epoch, but the unit is milliseconds instead of seconds. Classic Unix timestamp usually means seconds.
How many digits is an epoch millisecond timestamp?
For current dates, epoch milliseconds are usually 13 digits.
Does JavaScript use milliseconds or seconds?
JavaScript Date uses milliseconds. Date.now() returns epoch milliseconds.
How do I convert a Java long timestamp to a date?
If the long is epoch milliseconds, use Instant.ofEpochMilli(value); if it is epoch seconds, use Instant.ofEpochSecond(value). Check the digit count first — 13 digits is usually milliseconds, 10 digits is usually seconds.