Skip to main content

Nanosekunden zu Datum

Wandeln Sie Nanosekunden in ein lesbares Datum um. Geben Sie den Zeitstempel in Nanosekunden ein (z. B. 1704067200000000000).

Ein Nanosekunden-Zeitstempel verliert in einer JavaScript-Zahl stillschweigend seine letzten drei Stellen

JavaScript-Zahlen halten ganze Zahlen nur bis 2⁵³ − 1 exakt. Ein aktueller Nanosekunden-Zeitstempel liegt bei etwa 1,77 × 10¹⁸ und überschreitet diese Grenze um den Faktor 196. Geben Sie einen ein, und aus 1770000000123456789 wird 1770000000123456800 — kein Fehler, keine Warnung, einfach drei Stellen leise ersetzt.

So wird gerechnet

  • Wandelt Nanosekunden-Zeitstempel in Daten und zurück und erhält dabei den Anteil unterhalb einer Millisekunde.
  • Weist auf die Präzisionsgrenze hin, denn dieses Versagen ist leise und nicht laut.
  • Übernimmt die Umrechnung in Millisekunden, die die meisten Datumsbibliotheken als Eingabe verlangen.
Nanosekunden ÷ 1.000.000 = Millisekunden
Nanosekunden ÷ 1.000.000.000 = Sekunden

MAX_SAFE_INTEGER = 9.007.199.254.740.991 (2⁵³ − 1)

in Nanosekunden umfasst dieser gesamte Bereich nur rund 104 Tage
in Millisekunden umfasst er rund 285.000 Jahre

Rechenbeispiel

Was jede Zeiteinheit innerhalb des sicheren Ganzzahlbereichs abdeckt und was beim Überschreiten passiert.

  1. Millisekunden: 2⁵³ deckt rund 285.000 Jahre ab
  2. Mikrosekunden: rund 285 Jahre
  3. Nanosekunden: rund 0,285 Jahre — etwa 104 Tage
  4. 1770000000123456789 einer Zahl zugewiesen
  5. wird zurückgelesen als 1770000000123456800

Die letzten drei Stellen haben sich geändert, und nichts hat es gemeldet. Ein Nanosekunden-Zeitstempel braucht BigInt oder eine Zeichenkette; ihn in einer gewöhnlichen Zahl zu halten ist keine Rundungsunbequemlichkeit, sondern die Garantie, dass jedes Detail unterhalb einer Mikrosekunde Fiktion ist.

Das Ergebnis lesen

  • Rechnen Sie mit BigInt und wandeln Sie erst in eine Zahl um, nachdem Sie auf Millisekunden heruntergeteilt haben. Die Division muss im BigInt-Raum stattfinden — erst umwandeln und dann teilen hat die Stellen, die Sie erhalten wollten, bereits zerstört.
  • Datenbanken und Übertragungsformate führen Nanosekunden genau deshalb häufig als Zeichenketten. Eine solche Zeichenkette zum Aufräumen in eine Gleitkommazahl zu parsen ist die häufigste Art, die Präzision zu verlieren, und es geschieht in der Schicht, die niemand prüft.
  • Das JavaScript-Date selbst ist millisekundenbasiert und kann Zeiten unterhalb einer Millisekunde gar nicht darstellen. Nanosekunden in ein Date zu wandeln verwirft den Rest konstruktionsbedingt, der Verlust dort ist also erwartbar und kein Fehler — überraschend ist nur, wenn er still während einer Rechnung eintritt.
  • Nanosekundengenauigkeit ist selten die tatsächliche Anforderung. Log-Sortierung, Tracing und Profiling brauchen meist monotone Reihenfolge statt absoluter Nanosekundengenauigkeit, und eine monotone Uhr liefert das ohne das Darstellungsproblem.

Häufige Fragen

Warum hat sich mein Zeitstempel um ein paar hundert Nanosekunden geändert?
Er wurde in einer Gleitkommazahl abgelegt, die ihn nicht darstellen kann. Oberhalb von 2⁵³ − 1 werden ganze Zahlen auf den nächsten darstellbaren Wert gerundet, aus 1770000000123456789 wird also 1770000000123456800. Nichts wirft einen Fehler, denn das ist definiertes Verhalten und kein Defekt.
Wie sollten Nanosekunden-Zeitstempel gespeichert werden?
Als BigInt in JavaScript, als 64-Bit-Ganzzahl in den meisten anderen Sprachen oder als Zeichenkette beim Überschreiten einer Grenze wie JSON. Wandeln Sie erst in eine Zahl um, wenn Sie auf Millisekunden heruntergeteilt haben und die zusätzlichen Stellen nicht mehr brauchen.

Leitfaden zur Nanosekunden-Präzision

Nanosekunden sind die höchste in der Informatik verwendete Zeitpräzision – eine Nanosekunde ist ein Milliardstel einer Sekunde (10⁻⁹). Dieses Format nutzen Systeme mit extremen Präzisionsanforderungen, etwa hochperformante Datenbanken, HFT-Systeme (Hochfrequenzhandel) oder Betriebssystemkerne für präzises Profiling.

Anwendungen, die Nanosekunden erfordern

Nanosekundengenauigkeit ist unverzichtbar bei: Finanzmärkten – ein Unterschied von Nanosekunden kann Millionen Gewinn oder Verlust bedeuten; Datenbanken wie Cassandra und Druid für die präzise Indizierung von Ereignissen; Telekommunikationssystemen, die die Datenübertragung synchronisieren; sowie bei wissenschaftlichen Messungen und in der Teilchenphysik.

Hardware-Grenzen

Die meisten Prozessoren takten im GHz-Bereich (z. B. 3 GHz = 3 Milliarden Zyklen pro Sekunde), doch ein Speicherzugriff dauert einige zehn Nanosekunden, und selbst das schnellste Ethernet fügt Verzögerungen im Mikrosekundenbereich hinzu. Praktisch ist Nanosekundengenauigkeit vor allem für CPU-interne Messungen und spezialisierte Hardware relevant.

Umrechnung und Formate

Merken Sie sich die Umrechnungen: 1 Sekunde = 10⁹ Nanosekunden, 1 Millisekunde = 10⁶ Nanosekunden, 1 Mikrosekunde = 10³ Nanosekunden. Sehr große Zahlen können in Programmiersprachen zu Überläufen führen – verwenden Sie in JavaScript BigInt oder, wo möglich, 64-Bit-Typen.