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 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 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 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 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 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 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 @1787043600123antwortetdate: 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 Siecoreutilsaus Homebrew und rufen Siegdate, wenn Sie eine Syntax für alles brauchen. - Ohne
-uwandeln 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
- sed -i funktioniert nicht unter macOS
- journalctl: Logs eines Dienstes
- Vorkommen im Log zählen: grep -c ist nicht die Antwort
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.