Unix-Zeitstempel: Epoche umrechnen und Zeitzonenfehler vermeiden

Unix-Zeitstempel: Epoche umrechnen und Zeitzonenfehler vermeiden

Rechnen Sie eine Unix-Epoche in ein lesbares Datum um und zurück, unterscheiden Sie Sekunden und Millisekunden und meiden Sie Zeitzonen-, JWT- und Zeitumstellungsfallen.

19.10.2026
18 Min. Lektüre
Teilen Sie diesen Artikel:
Unix-ZeitstempelEpocheZeitzoneJWTAnleitung

Eine Epoche zählt Sekunden und kennt keine Zeitzone

Eine Zahl wie 1710000000 oder 1710000000000 steht in einer Logzeile, einer API-Antwort, einem JWT oder einer Datenbankspalte. Sie zählt die Zeit seit dem 1. Januar 1970 um 00:00:00 UTC, gezählt als Sekunden oder als Millisekunden. Eine Zeitzone enthält sie nicht. Der Unix-Timestamp-Konverter macht aus einer Epoche ein Datum und aus einem Datum eine Epoche. Leere Felder folgen einer Live-Uhr. Geben Sie eine Epoche, ein ISO-Datum oder ein lokales Datum mit Uhrzeit ein, dann ziehen die beiden anderen Felder nach. Eine Tabelle zeigt die Epoche als Sekunden und als Millisekunden, dazu ISO 8601, RFC 2822, ein SQL-Datetime, einen Text in Ihrer Sprache und eine relative Angabe. Sie nutzt wahlweise UTC oder die Zeitzone Ihres Browsers. Die Umrechnung läuft im Tab, und es wird nichts gesendet. Dieser Leitfaden liest eine Epoche Ziffer für Ziffer und zeigt dann, was eine Zeitzone ändert und was nicht. Er behandelt die teuersten Fehler: Sekunden, die als Millisekunden gelesen werden, ein JWT, das nie abläuft, ein Datum ohne Zone und eine Zeitumstellung. Dazu kommen die Grenzen von 2038 und anderer Epochen sowie dieselben Umrechnungen in JavaScript, Python, einer Shell und Java. Verwandte Werkzeuge stehen im Hub der Entwickler-Utilities.

Eine Live-Uhr oben auf der Seite mit der aktuellen Epoche als Sekunden und als Millisekunden, einer Schaltfläche Pause und einer Schaltfläche ISO kopieren (UTC)
Drei verknüpfte Felder: Unix-Epoche, ISO / Datumstext und Lokales Datum/Uhrzeit. Ändern Sie eines, folgen die beiden anderen
Automatische Einheit: bis 10 Stellen liest das Werkzeug Sekunden, bei 11 bis 15 Stellen Millisekunden, und ein Badge zeigt die Wahl
Eine Formattabelle mit einer Schaltfläche Kopieren in jeder Zeile: Epoche (Sekunden), Epoche (Millisekunden), ISO 8601, RFC 2822, SQL-Datetime, Locale-Zeichenfolge und relative Zeit
Anzeige in UTC oder Lokal. Lokal meint die Zeitzone Ihres Browsers: Das Werkzeug hat keine Liste von Zeitzonen
Negative Epochen und Sekundenbruchteile werden akzeptiert, und Werte mit mehr als 15 Stellen werden abgelehnt, statt gekürzt zu werden
Kein Upload: Die Berechnung bleibt im Browser

Wofür der Konverter da ist und wo er endet

Gute Einsatzfälle

Der Konverter beantwortet zwei Fragen: Welchen Zeitpunkt nennt diese Zahl, und welche Zahl nennt diesen Zeitpunkt?

Eine Epoche aus einer Logzeile, einem API-Feld oder einer Datenbankzeile lesen und am Badge prüfen, ob das Werkzeug Sekunden oder Millisekunden erkannt hat
Ein Datum in eine Epoche umschreiben, für eine Abfrage, ein Testdatum oder eine Fixture, und die passende Zeile kopieren
Zwischen UTC und Lokal wechseln, um zu sehen, wie weit eine Zeitzone denselben Zeitpunkt verschiebt und auf welchen Tag er fällt
Die Claims <code>exp</code>, <code>iat</code> und <code>nbf</code> eines Tokens prüfen: jede Zahl einfügen und die Einheit auf Sekunden stellen
Die Zeile ISO 8601 in ein Ticket oder ein Code-Review einfügen, damit der Leser das Datum samt Versatz sieht
Mit Pause die Live-Uhr anhalten, um eine Epoche in Ruhe zu kopieren
Was woanders hingehört

Der Konverter liest jeweils einen Wert. Den Rest der Kette prüfen Sie an anderer Stelle.

Ein Token dekodieren und seine Claims lesen: Der <a href="/de/jwt-decode" class="text-primary hover:underline">JWT-Decoder</a> zeigt <code>exp</code> als rohe Zahl aus dem Payload, und der <a href="/de/blog/jwt-online-erstellen-dekodieren" class="text-primary hover:underline">JWT-Leitfaden</a> erklärt die Claims
Wissen, wann ein Zeitplan auslöst: Der <a href="/de/cron-parser" class="text-primary hover:underline">Cron-Parser</a> berechnet die nächsten Ausführungen, und der <a href="/de/blog/cron-ausdruck-pruefen-naechste-ausfuehrung" class="text-primary hover:underline">Cron-Leitfaden</a> behandelt Zeitzonen und Zeitumstellungen in diesem Zusammenhang
Ein Webserver-Log in eine Tabelle verwandeln: Das Werkzeug <a href="/de/access-log-to-table" class="text-primary hover:underline">Access-Log in Tabelle</a> behält das Datum so, wie es geschrieben steht, etwa <code>09/Mar/2024:16:00:00 +0000</code>, und der Konverter lehnt diese Form ab. Schreiben Sie sie zuerst als <code>2024-03-09T16:00:00+00:00</code>
Eine benannte Zeitzone wie Tokio wählen: Der Konverter kennt nur UTC und die Zone Ihres Browsers. Nutzen Sie <code>Intl.DateTimeFormat</code> oder die Zeitzonenbibliothek Ihrer Sprache (siehe den Code weiter unten)
Mikrosekunden, Nanosekunden oder ein Windows-FILETIME lesen: Diese Werte haben 16 Stellen oder mehr und werden abgelehnt. Teilen Sie selbst durch 1000 oder durch 10 000 000 und ziehen Sie, wo es einen gibt, den Versatz der Epoche ab
Eine ganze Datei umrechnen: Das Werkzeug liest jeweils einen Wert
Einem Datum einen Monat oder ein Jahr hinzufügen: Nehmen Sie eine Datumsbibliothek, denn ein Tag hat auf einer lokalen Uhr nicht immer 86 400 Sekunden

Einen Wert fehlerfrei lesen

Sekunden und Millisekunden an den Ziffern unterscheiden

Im Modus Auto zählt das Werkzeug die Ziffern des ganzzahligen Teils ohne Vorzeichen. Die Beispiele unten können Sie in das Feld Unix-Epoche einfügen.

<code>1710000000</code> hat 10 Stellen und wird als Sekunden gelesen: Samstag, 9. März 2024, 16:00:00 UTC. Das Badge zeigt „Erkannt: Sekunden“
<code>1710000000000</code> hat 13 Stellen und wird als Millisekunden gelesen. Es ergibt denselben Zeitpunkt, und das Badge zeigt „Erkannt: Millisekunden“
Vom 9. September 2001 (<code>1000000000</code>) bis zum 20. November 2286 (<code>9999999999</code>) hat eine Epoche aus Sekunden 10 Stellen. Im selben Zeitraum hat eine Epoche aus Millisekunden 13 Stellen
<code>10000000000</code> hat 11 Stellen und wird als Millisekunden gelesen: 26. April 1970, 17:46:40 UTC. Als Sekunden gelesen, wäre ein Wert dieser Größe das Jahr 2286
Ein Datum im Januar 1970 bedeutet fast immer, dass Sekunden als Millisekunden gelesen wurden. <code>1710000000</code> als Millisekunden ist der 20. Januar 1970, 19:00:00 UTC. Stellen Sie die Einheit auf Millisekunden, um das zu sehen
Ein Datum im Jahr <code>56157</code> bedeutet das Gegenteil. <code>1710000000000</code> als Sekunden gelesen ergibt <code>+056157-09-28T16:00:00.000Z</code>. Stellen Sie die Einheit auf Sekunden, um das zu sehen
Ab 16 Stellen antwortet das Werkzeug „Dieser Wert wirkt präziser als Millisekunden“ und zeigt kein Datum
Bruchteile, Vorzeichen und was das Feld ablehnt

Das Feld Unix-Epoche akzeptiert Ziffern, ein optionales Minuszeichen und einen Dezimalpunkt.

<code>1710000000.5</code> ist 16:00:00.500 UTC. Die Funktion <code>time.time()</code> von Python liefert solche Werte: Sekunden mit Bruchteil
Stellen jenseits der Millisekunde werden abgeschnitten, nicht gerundet: <code>1710000000.123456</code> ergibt 16:00:00.123
<code>0</code> ist der 1. Januar 1970, 00:00:00 UTC, <code>-1</code> der 31. Dezember 1969, 23:59:59 und <code>-86400</code> der 31. Dezember 1969, 00:00:00. POSIX lässt negative Werte offen, JavaScript und Python verarbeiten sie
Ein Dezimalkomma (<code>1710000000,5</code>), ein Exponent (<code>1e9</code>) und ein hexadezimaler Wert werden mit „Diese Eingabe konnte nicht analysiert werden“ abgelehnt
Derselbe Zeitpunkt in vier Zeitzonen

Nehmen wir 1710000000. Die Epoche bleibt gleich, nur ihre Lesart ändert sich. Stellen Sie Zeitzone auf Lokal, um die Zeile Ihrer eigenen Zone zu sehen.

UTC: Samstag, 9. März 2024, 16:00:00
Paris: 17:00:00, UTC+1 (Winterzeit bis zum 31. März 2024)
New York: 11:00:00, UTC-5. Die USA stellten am nächsten Tag, dem 10. März 2024, auf Sommerzeit um, und New York liegt seitdem bei UTC-4
Tokio: Sonntag, 10. März 2024, 01:00:00, UTC+9. Die Zone verschiebt auch den Tag, was beim Aufteilen von Logs nach Tagen zählt
Das Feld Lokales Datum/Uhrzeit folgt immer der Wanduhr Ihres Browsers, auch wenn die Tabelle auf UTC steht. Ein Hinweis unter dem Feld sagt das
Datumstext mit und ohne Zone

Geben Sie ein Datum in das Feld ISO / Datumstext ein, um seine Epoche zu erhalten. Das Ergebnis hängt davon ab, was Sie hinter der Uhrzeit geschrieben haben. Die Werte unten wurden in Node 26 geprüft, das dieselbe JavaScript-Engine wie Chrome nutzt. Andere Browser können Formen außerhalb von ISO anders lesen.

<code>2024-03-09T16:00:00Z</code> ergibt in jeder Browserzone <code>1710000000</code>, weil das <code>Z</code> für UTC steht
<code>2024-03-09T16:00:00+01:00</code> ergibt <code>1709996400</code>, also 15:00 UTC
<code>2024-03-09T16:00:00</code> hat keinen Versatz und wird in der Zone des Browsers gelesen: <code>1710000000</code> in UTC, <code>1709996400</code> in Paris, <code>1710018000</code> in New York und <code>1709967600</code> in Tokio
<code>2024-03-09</code>, ein Datum allein, gilt als Mitternacht UTC: <code>1709942400</code> in jeder Zone. Eine Uhrzeit ohne Versatz ändert die Regel
<code>2024-03-09 16:00:00</code> mit Leerzeichen und <code>March 9, 2024</code> sind keine ISO-Formen. Die hier getestete Engine liest sie in Ortszeit, und der Standard überlässt die Regel jeder Engine
<code>09/03/2024</code> wird mit dem Monat zuerst gelesen, als 3. September 2024. Ein Format mit dem Tag zuerst müssen Sie als ISO umschreiben
<code>Sat, 09 Mar 2024 16:00:00 GMT</code>, die RFC-2822-Form aus HTTP-Headern, wird verstanden und ergibt <code>1710000000</code>

Fünf Fehler, die man erst in der Produktion sieht

Sekunden übergeben, wo Millisekunden erwartet werden, oder umgekehrt

JavaScript zählt in Millisekunden, die meisten anderen Sprachen und Protokolle zählen Sekunden. new Date(1710000000) ergibt den 20. Januar 1970, 19:00:00 UTC. In Python 3.14 bricht datetime.fromtimestamp(1710000000000, tz=timezone.utc) mit year must be in 1..9999, not 56157 ab. Java hat zwei Methoden, Instant.ofEpochSecond und Instant.ofEpochMilli, und nichts warnt Sie, wenn Sie die falsche wählen.

Das Ergebnis von <code>Date.now()</code> an eine Funktion übergeben, die Sekunden erwartet, oder das von <code>time()</code> an <code>new Date()</code>
In einer Kette aus drei Diensten zweimal durch 1000 teilen oder nie
Millisekunden in einer 32-Bit-Ganzzahlspalte speichern, die höchstens 2 147 483 647 fasst
Nanosekunden mit <code>JSON.parse</code> lesen: 1710000000123456789 kommt als 1710000000123456800 zurück, weil JavaScript-Zahlen nur bis 9 007 199 254 740 991 exakt sind. Lesen Sie das Feld als String oder als BigInt
Ein Sekundenfeld mit einem Millisekundenfeld vergleichen und ein Ergebnis erhalten, das immer wahr oder immer falsch ist
Schreiben Sie die Einheit in den Namen (<code>created_at_ms</code>, <code>expires_in_s</code>) und in die API-Beschreibung, und testen Sie mit einem Wert, den Sie lesen können, etwa der Epoche von heute Mittag.
Ein JWT, das erst in über 50 000 Jahren abläuft

RFC 7519 definiert exp, nbf und iat als Sekunden seit der Epoche, Schaltsekunden ausgenommen. Ein Token, das mit exp auf Date.now() + 3600000 signiert wurde, trägt Millisekunden. Mit der Bibliothek jose in Version 6 wurde ein solches Token vom 9. März 2024 noch akzeptiert, als das Prüfdatum auf 2034 stand, und sein exp von 1710003600000 ergibt als Sekunden gelesen +056157-11-09T08:00:00.000Z. Der Konverter verdeckt den Fehler, wenn Sie die Einheit auf Auto lassen, weil er 13 Stellen als Millisekunden liest und ein normales Datum zeigt.

<code>exp</code> aus einer Millisekundenuhr setzen, etwa mit <code>Date.now() + 3600 * 1000</code>
<code>exp</code> mit der Einheit Auto in den Konverter einfügen und schließen, das Datum sei in Ordnung
Dem Prüfer vertrauen: Er vergleicht Zahlen und kann nicht wissen, welche Einheit Sie gemeint haben
<code>iat</code> als Sekunden und <code>exp</code> als Millisekunden im selben Payload mischen, sodass das Token ewig zu leben scheint
Dekodieren Sie das Token und fügen Sie <code>exp</code> dann mit der Einheit Sekunden ein. Ein Datum in 2026 ist richtig. Ein Datum nach dem Jahr 3000 ist ein Fehler.
Ein Datum ohne Zone lesen

Ein Datumstext ohne Versatz nennt keinen Zeitpunkt, solange keine Zone gewählt ist. In Python ergibt datetime(2024, 3, 9, 16, 0, 0).timestamp() auf einem Rechner mit Zone Paris 1709996400 und nicht 1710000000. JavaScript liest 2024-03-09 als Mitternacht UTC, aber 2024-03-09T00:00:00 als Mitternacht Ortszeit: Zwei Schreibweisen desselben Tages unterscheiden sich um den Versatz des Rechners.

Eine lokale Wanduhrzeit wie UTC speichern und sie dann Nutzern in einer anderen Zone anzeigen
Für dieselbe Zeichenkette auf einem Laptop in Paris und einem Server in UTC verschiedene Epochen erhalten
Logs nach Tagen in UTC aufteilen, obwohl die Leser in einer anderen Zone arbeiten: <code>1710000000</code> ist in Tokio schon der 10.
In einer Fixture ein Datum ohne Zone schreiben, sodass ein Test in einem Land besteht und im anderen scheitert
Schreiben Sie den Versatz oder ein <code>Z</code> auf jedes Datum, das Sie austauschen. Speichern Sie die Epoche oder das UTC-Datum und wenden Sie eine Zone erst bei der Anzeige an.
Einer lokalen Uhrzeit über eine Zeitumstellung hinweg trauen

Europa kehrt am Sonntag, dem 25. Oktober 2026, um 01:00 UTC zur Winterzeit zurück. In Paris wird aus 03:00 wieder 02:00, also gibt es 02:30 zweimal: um 00:30 UTC (1792888200) und um 01:30 UTC (1792891800). Bei einem auf Paris gestellten Browser nimmt das Feld Lokales Datum/Uhrzeit die erste. Am 29. März 2026 gibt es die Stunde von 02:00 bis 03:00 nicht, und das Feld meldet, dass es 02:30 nicht analysieren kann. Die Epoche beseitigt den Zweifel, denn sie nennt genau einen Zeitpunkt.

86 400 Sekunden addieren, um „morgen dieselbe Uhrzeit“ zu erhalten. Von 09:00 in Paris am 24. Oktober 2026 aus ergibt das 08:00 am 25., denn dieser Tag dauert 25 Stunden
Eine lokale Zeit ohne Versatz speichern und nach der Rückstellung zwei mögliche Epochen finden
Einen Job auf 02:30 Ortszeit legen und erleben, dass er zweimal läuft oder gar nicht (der Cron-Leitfaden behandelt diesen Fall)
Glauben, dass zwei lokale Zeiten im Abstand von 24 Stunden immer 86 400 Sekunden auseinanderliegen
Rechnen Sie mit Epochen oder UTC-Daten und wandeln Sie nur für die Anzeige in Ortszeit um. Nehmen Sie eine Datumsbibliothek, wenn Sie „morgen dieselbe Uhrzeit“ brauchen.
Die Grenzen des Formats vergessen

Eine Epoche ist leicht zu speichern und leicht zum Überlaufen zu bringen. Die Grenzen unten ergeben sich aus der Breite des Typs, der sie hält.

Eine Epoche in einer vorzeichenbehafteten 32-Bit-Ganzzahl halten: Die letzte Sekunde ist <code>2147483647</code>, der 19. Januar 2038, 03:14:07 UTC. Eine Sekunde später springt der Zähler auf ein Datum im Jahr 1901
Für ein Datum nach 2038 eine MySQL-Spalte <code>TIMESTAMP</code> verwenden: Die Dokumentation nennt '2038-01-19 03:14:07' UTC als Obergrenze
Eine vorzeichenlose 32-Bit-Ganzzahl für sicher halten: Sie endet bei <code>4294967295</code>, und <code>4294967296</code> ist der 7. Februar 2106, 06:28:16 UTC
Mit Schaltsekunden rechnen: Die Unix-Zeit zählt jeden Tag als genau 86 400 Sekunden, daher kann der Abstand zweier Epochen eine Sekunde kürzer sein als die tatsächlich verstrichene Zeit
Verwenden Sie eine 64-Bit-Ganzzahl oder einen nativen Datumstyp und testen Sie die Grenzwerte <code>2147483647</code> und <code>4294967296</code> im Konverter.

Einheiten, Grenzen und andere Epochen auf einen Blick

Die Einheit jedes Systems

Lesen Sie die Dokumentation des Systems, das die Zahl erzeugt hat, bevor Sie ihren Ziffern trauen.

JavaScript: <code>Date.now()</code> und <code>getTime()</code> liefern Millisekunden
Python: <code>time.time()</code> liefert Sekunden als Gleitkommazahl, <code>time.time_ns()</code> liefert Nanosekunden
Java: <code>System.currentTimeMillis()</code> liefert Millisekunden, <code>Instant.getEpochSecond()</code> liefert Sekunden
PHP: <code>time()</code> liefert Sekunden, <code>microtime(true)</code> liefert Sekunden als Gleitkommazahl
Shell: <code>date +%s</code> gibt Sekunden aus. Das GNU-date gibt mit <code>date +%s%3N</code> auch Millisekunden aus
JWT: <code>exp</code>, <code>nbf</code> und <code>iat</code> sind immer Sekunden, und RFC 7519 erlaubt einen Bruchteil
Der FastMinify-Konverter: Sekunden bis 10 Stellen, Millisekunden bei 11 bis 15 Stellen, Ablehnung ab 16 Stellen
Zahlen, die man kennen sollte

Diese Werte erkennt man schnell, wenn man sie einmal gesehen hat, und jeden können Sie in den Konverter einfügen.

<code>0</code>: 1. Januar 1970, 00:00:00 UTC, der Ursprung
<code>1000000000</code>: 9. September 2001, 01:46:40 UTC, die erste Epoche mit 10 Stellen
<code>2147483647</code>: 19. Januar 2038, 03:14:07 UTC, das Ende einer vorzeichenbehafteten 32-Bit-Ganzzahl
<code>4294967296</code>: 7. Februar 2106, 06:28:16 UTC, eins hinter dem Ende einer vorzeichenlosen 32-Bit-Ganzzahl
<code>9999999999</code>: 20. November 2286, 17:46:39 UTC, die letzte Epoche mit 10 Stellen
<code>8640000000000</code> Sekunden: 13. September 275760, das letzte Datum, das ein JavaScript-<code>Date</code> halten kann. Mit der Einheit Sekunden akzeptiert das Werkzeug es und lehnt eine Sekunde mehr ab
Epochen, die nicht 1970 beginnen

Manche Systeme zählen ab einem anderen Ursprung oder in einer anderen Einheit. Liegt ein Datum um Jahrzehnte daneben, suchen Sie einen dieser Fälle.

Windows-FILETIME: Schritte von 100 Nanosekunden seit dem 1. Januar 1601. Der Versatz zu Unix beträgt 11 644 473 600 Sekunden. Für <code>1710000000</code> lautet das FILETIME 133544736000000000, also 18 Stellen, und der Konverter lehnt es ab
Absolute Zeit bei Apple (Core Data, Cocoa): Sekunden seit dem 1. Januar 2001, ein Versatz von 978 307 200 Sekunden. Aus <code>1710000000</code> wird 731692800
GPS-Zeit: Sekunden seit dem 6. Januar 1980, ein Versatz von 315 964 800 Sekunden. Sie kennt keine Schaltsekunden, sodass der Abstand zu UTC mit der Zeit wächst
.NET-Ticks: Schritte von 100 Nanosekunden seit dem 1. Januar des Jahres 1. Die Unix-Epoche liegt 62 135 596 800 Sekunden von diesem Ursprung entfernt
Seriennummern von Excel und Google Sheets: Tage seit dem 30. Dezember 1899 im Standardsystem. Der 1. Januar 1970 ist Tag 25 569, und <code>1710000000</code> entspricht 45360,67 (der Bruchteil ist die Uhrzeit)

Der Unix-Timestamp-Konverter Schritt für Schritt

Eine Epoche lesen

Der Unix-Timestamp-Konverter aktualisiert sich kurz nach dem letzten Tastenanschlag. Eine Schaltfläche Umrechnen gibt es nicht.

1

Auf die Live-Uhr schauen

Der Block „Aktuelle Unix-Zeit“ zeigt die Epoche als Sekunden und als Millisekunden, jeweils mit einer Schaltfläche Kopieren. Pause hält die Uhr an, Fortsetzen startet sie wieder. ISO kopieren (UTC) übernimmt das aktuelle Datum.

2

Die Epoche eingeben oder einfügen

Nutzen Sie das Feld Unix-Epoche. Ein Badge wie „Erkannt: Sekunden“ zeigt, wie die Ziffern gelesen wurden. Mit der Option Einheit können Sie Sekunden oder Millisekunden erzwingen.

3

Die Tabelle Formate lesen

Sie listet die Epoche als Sekunden und als Millisekunden, ISO 8601, RFC 2822 mit englischen Tages- und Monatsnamen, ein SQL-Datetime, eine Zeichenfolge in der Sprache der Seite und eine relative Zeit. Die relative Zeile zählt einen Monat als 30 Tage und ein Jahr als 365, sie ist also ein grober Anhaltspunkt.

4

Die gewünschte Zeile kopieren

Jede Zeile hat ihre eigene Schaltfläche Kopieren. Eine kurze Meldung bestätigt, was kopiert wurde.

Von einem Datum ausgehen

Die drei Felder bleiben synchron. Das Feld, das Sie ändern, bestimmt die anderen.

1

ISO / Datumstext

Geben Sie 2024-03-09T16:00:00Z ein, um die Epoche zu erhalten. Das Feld Unix-Epoche füllt sich mit Sekunden, oder mit Millisekunden, wenn die Einheit auf Millisekunden steht.

2

Lokales Datum/Uhrzeit

Nutzen Sie dieses Feld, um ein Datum auf Ihrer Wanduhr einzugeben. Es ist nie UTC, auch wenn die Tabelle UTC zeigt, und ein Hinweis unter dem Feld sagt das.

3

Die gemeinte Zone prüfen

Hat der ISO-Text weder Z noch Versatz, wendet der Browser seine eigene Zone an. Fügen Sie den Versatz hinzu, wenn das Ergebnis auf jedem Rechner gleich sein soll.

Die Optionen einstellen

Zwei Einstellungen ändern, wie die Seite einen Wert liest und zeigt.

1

Einheit

Auto liest bis 10 Stellen als Sekunden und 11 bis 15 Stellen als Millisekunden. Sekunden und Millisekunden erzwingen die Lesart. Nehmen Sie Sekunden für die Claims eines JWT.

2

Zeitzone

UTC ist die Voreinstellung. Lokal nutzt die Zone Ihres Browsers und ändert die Zeilen ISO, RFC 2822, SQL und Locale-Zeichenfolge. Die Epochenzeilen ändern sich nie.

3

Probe laden und Alles löschen

Probe laden trägt 1710000000 ein. Alles löschen leert die Felder und bringt die Live-Uhr zurück.

Eine Ablehnung verstehen

Kann ein Wert nicht gelesen werden, sagt das Werkzeug warum und zeigt kein Datum.

1

Diese Eingabe konnte nicht analysiert werden

Der Text ist weder eine Zahl noch ein Datum, das der Browser versteht. Schreiben Sie das Datum als ISO 8601 um, zum Beispiel 2024-03-09T16:00:00+00:00.

2

Dieser Wert wirkt präziser als Millisekunden

Die Zahl hat 16 Stellen oder mehr, wie Mikrosekunden, Nanosekunden oder ein FILETIME. Entfernen Sie zuerst die überzähligen Stellen.

Dieselben Umrechnungen in JavaScript, Python, einer Shell und Java

JavaScript

JavaScript arbeitet in Millisekunden. Multiplizieren oder teilen Sie an der Grenze zu Systemen, die Sekunden nutzen, durch 1000, und geben Sie Intl.DateTimeFormat eine Zone, wenn Sie eine benannte brauchen.

Einfaches Beispiel

const epochSeconds = 1710000000 // Seconds -> Date: multiply by 1000 new Date(epochSeconds * 1000).toISOString() // 2024-03-09T16:00:00.000Z new Date(epochSeconds).toISOString() // 1970-01-20T19:00:00.000Z (seconds read as milliseconds) // Date -> seconds: divide by 1000 and round down Math.floor(Date.parse('2024-03-09T16:00:00Z') / 1000) // 1710000000 // A named zone for display. The epoch does not change. const fmt = new Intl.DateTimeFormat('de-DE', { timeZone: 'Asia/Tokyo', dateStyle: 'medium', timeStyle: 'long', }) fmt.format(epochSeconds * 1000) // 10.03.2024, 01:00:00 GMT+9 // Date alone is UTC, date with a time and no offset is local Date.parse('2024-03-09') // 1709942400000 in every zone Date.parse('2024-03-09T16:00:00') // depends on the zone of the machine
Python

Übergeben Sie bei jedem Aufruf eine Zeitzone. Ein naives datetime hat keine, und timestamp() nimmt dann die Zone des Rechners.

Einfaches Beispiel

import time from datetime import datetime, timezone from zoneinfo import ZoneInfo ts = 1710000000 datetime.fromtimestamp(ts, tz=timezone.utc).isoformat() # '2024-03-09T16:00:00+00:00' datetime.fromtimestamp(ts, tz=ZoneInfo('America/New_York')).isoformat() # '2024-03-09T11:00:00-05:00' # Milliseconds: divide first, or Python raises ValueError (year out of range) datetime.fromtimestamp(1710000000000 / 1000, tz=timezone.utc) # Date -> epoch, with the zone written down int(datetime(2024, 3, 9, 16, 0, 0, tzinfo=timezone.utc).timestamp()) # 1710000000 # Without tzinfo the result depends on the machine (TZ=Europe/Paris gives 1709996400) int(datetime(2024, 3, 9, 16, 0, 0).timestamp()) time.time() # a float in seconds, for example 1792398878.41
Eine Shell

Das GNU-date unter Linux und das BSD-date von macOS haben nicht dieselben Optionen.

Einfaches Beispiel

# Current epoch in seconds (GNU and macOS) date +%s # Epoch -> date, GNU date (Linux) date -u -d @1710000000 +%Y-%m-%dT%H:%M:%SZ # 2024-03-09T16:00:00Z TZ=Europe/Paris date -d @1710000000 +%FT%T%z # 2024-03-09T17:00:00+0100 # Epoch -> date, BSD date (macOS) date -u -r 1710000000 +%Y-%m-%dT%H:%M:%SZ # 2024-03-09T16:00:00Z # Milliseconds, GNU date only date +%s%3N
Java

Die API java.time hält die Einheit im Methodennamen, sodass eine Verwechslung im Code-Review auffällt.

Einfaches Beispiel

import java.time.*; Instant.ofEpochSecond(1710000000L); // 2024-03-09T16:00:00Z Instant.ofEpochMilli(1710000000000L); // 2024-03-09T16:00:00Z Instant.ofEpochSecond(1710000000L) .atZone(ZoneId.of("Europe/Paris")); // 2024-03-09T17:00+01:00[Europe/Paris] Instant.parse("2024-03-09T16:00:00Z").getEpochSecond(); // 1710000000

Zusammenfassung

Eine Epoche nennt genau einen Zeitpunkt, und fast jeder Fehler entsteht beim Lesen. Zählen Sie die Ziffern, um Sekunden von Millisekunden zu trennen, schreiben Sie den Versatz auf jedes Datum und heben Sie die Zone für die Anzeige auf. Der Unix-Timestamp-Konverter zeigt denselben Zeitpunkt in den gängigen Formaten, in UTC oder in Ihrer eigenen Zone. Er liest jeweils einen Wert, bietet keine Liste von Zeitzonen und lehnt Werte ab 16 Stellen ab. Bei einem Token lesen Sie die Claims mit dem JWT-Decoder und fügen exp mit der Einheit Sekunden ein. Bei einem Log schreiben Sie das Datum zuerst als ISO 8601 um. Der Hub der Entwickler-Utilities listet die verwandten Werkzeuge.

Einen Unix-Zeitstempel im Browser umrechnen

Zählen Sie die Ziffern: 10 für Sekunden, 13 für Millisekunden, und misstrauen Sie jedem Datum im Jahr 1970 oder nach dem Jahr 3000
Schreiben Sie den Versatz oder ein Z auf jedes Datum, das Sie speichern oder senden
Rechnen Sie mit Epochen oder UTC-Daten und wandeln Sie nur für die Anzeige in Ortszeit um
Stellen Sie die Einheit auf Sekunden, wenn Sie die Claims eines JWT prüfen
Verwenden Sie eine 64-Bit-Ganzzahl und testen Sie die Werte 2147483647 und 4294967296
Teilen Sie diesen Artikel
Teilen Sie diesen Artikel: