CLI AI

Unix-Zeitstempel auf der Kommandozeile in ein Datum wandeln

2026-08-18

date -d @1787043600 druckt das Datum zu einem Zeitstempel, und date -u -d '2026-08-18 09:00:00' +%s geht den Weg zurück. Zwei Details entscheiden, ob das bei Ihnen klappt: macOS nutzt -r statt -d @, und ein Millisekundenstempel muss erst durch 1000 geteilt werden, sonst weist date ihn rundheraus ab.

1. Zeitstempel zu Datum

clai
$ clai wandle 1787043600 in ein datum→ date -d @1787043600Tue Aug 18 09:00:00 UTC 2026

Das @ vor der Zahl ist Pflicht — es sagt date, dass es Sekunden seit 1970 sind und keine Datumszeichenkette. Ausgegeben wird in der Zeitzone der Maschine.

2. Ausdrücklich in UTC

clai
$ clai zeige 1787043600 in UTC→ date -u -d @1787043600Tue Aug 18 09:00:00 UTC 2026

-u nagelt die Ausgabe auf UTC fest, egal wie die Maschine eingestellt ist. In einem Störungs-Thread ist das die einzige Art, den Streit über die Stunde zu beenden.

3. In einer bestimmten Zeitzone

clai
$ clai zeige diese zeit in berlin→ TZ=Europe/Berlin date -d @1787043600Tue Aug 18 11:00:00 CEST 2026

Ein TZ vor dem Befehl gilt nur für diesen Befehl. Nehmen Sie IANA-Namen (Europe/Berlin, America/New_York) statt Abkürzungen wie CEST, die mehrdeutig sind.

4. Und zurück: Datum zu Zeitstempel

clai
$ clai wandle den 18. august 2026 09:00 UTC in unix-zeit→ date -u -d '2026-08-18 09:00:00' +%s1787043600

+%s ist das Ausgabeformat "Sekunden seit der Epoche". Ohne -u wird die Zeichenkette in der Zeitzone der Maschine gelesen, und die Zahl fällt anders aus.

5. Als ISO 8601

clai
$ clai gib den zeitstempel im ISO-format aus→ date -u -Is -d @17870436002026-08-18T09:00:00+00:00

-Is ist die Kurzform von --iso-8601=seconds. Fast jede Programmiersprache liest dieses Format ohne Zusatzaufwand.

6. Ein Millisekunden-Zeitstempel

clai
$ clai wandle den millisekunden-zeitstempel 1787043600123→ ms=1787043600123; date -u -d @$((ms/1000)) +"%F %T.$((ms%1000))"2026-08-18 09:00:00.123

JavaScript, Java und die meisten APIs liefern Millisekunden. Die ganzzahlige Division ergibt die Sekunden, der Rest liefert den Nachkommateil, den date von allein nicht erzeugt.

Gotchas

  • date versteht keine Millisekunden. Geprüft: date -u -d @1787043600123 antwortet date: invalid date '@1787043600123'. Die Zahl stammt nicht aus ferner Zukunft, sie ist 2026 mal tausend.
  • macOS nutzt ein anderes Flag. GNU: date -d @1787043600. BSD und macOS: date -r 1787043600. Ein unter Linux geschriebenes Skript druckt auf dem Mac stillschweigend das heutige Datum oder scheitert — installieren Sie coreutils aus Homebrew und rufen Sie gdate, wenn Sie eine Syntax für alles brauchen.
  • Ohne -u wandeln Sie in eine fremde Zeitzone. Derselbe Stempel liegt auf einem UTC-Server und auf einem Laptop in Berlin zwei Stunden auseinander, wie oben zu sehen. In Störungsberichten die Zone immer festschreiben.

Related questions

Wie bekomme ich den aktuellen Zeitstempel? date +%s. Für Millisekunden hat GNU date +%s%3N; BSD kennt dieses Format nicht.

Wie berechne ich die Differenz zweier Daten? Beide in Sekunden wandeln und subtrahieren: zwischen dem 11. und 18. August 2026 sind das 604800 Sekunden, exakt eine Woche.

Was ist das Jahr-2038-Problem? Ein vorzeichenbehaftetes 32-Bit-Sekundenfeld läuft am 19. Januar 2038 über. Auf 64-Bit-Systemen und in modernen Sprachen ist das erledigt, in alten Binärformaten taucht es weiterhin auf.

See also

CliAI macht aus "welche Zeit war 1787043600" das passende Flag für Ihr System und zeigt es vor dem Ausführen. In einer Zeile installieren.