914 Stimmen

Ermittelt die aktuelle Zeit in Sekunden seit der Epoche unter Linux, Bash

Ich brauche etwas Einfaches wie date aber in Sekunden seit 1970 anstelle des aktuellen Datums, der Stunden, Minuten und Sekunden.

date scheint diese Option nicht zu bieten. Gibt es einen einfachen Weg?

9 Stimmen

Einige Versionen von date haben es, andere nicht. Es ist also nicht immer vorhanden. Ich habe "type -a date" ausgeführt und eine andere Version verwendet, und das hat funktioniert.

2 Stimmen

FWIW, Ubuntu hat nur /bin/date, für das die Antwort von @Steef funktioniert

1 Stimmen

@TheBonsai das ist nicht Teil der POSIX-Standardversion des 'date'-Tools. Nur weil Ihre Version es hat (wahrscheinlich GNU), sollten Sie nicht davon ausgehen, dass alle Implementierungen es haben.

24voto

PeqNP Punkte 1303

Dies ist eine Erweiterung dessen, was @pellucide getan hat, aber für Macs:

So bestimmen Sie die Anzahl der Sekunden seit der Epoche (1. Januar 1970) für ein beliebiges Datum (z. B. 21. Oktober 1973)

$ date -j -f "%b %d %Y %T" "Oct 21 1973 00:00:00" "+%s"
120034800

Bitte beachten Sie, dass ich der Vollständigkeit halber den Zeitteil in das Format aufgenommen habe. Der Grund dafür ist, dass date nimmt den von Ihnen angegebenen Datumsteil und fügt die aktuell Zeit auf den angegebenen Wert. Wenn Sie zum Beispiel den obigen Befehl um 16:19 Uhr ausführen, ohne den Teil "00:00:00", wird die Zeit automatisch hinzugefügt. So wird "Oct 21 1973" als "Oct 21 1973 16:19:00" geparst. Das ist vielleicht nicht das, was Sie wollen.

So konvertieren Sie Ihren Zeitstempel zurück in ein Datum:

$ date -j -r 120034800
Sun Oct 21 00:00:00 PDT 1973

Apples Manpage für die Datumsimplementierung: https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/date.1.html

3voto

comonad Punkte 4988

Verwenden Sie dieses Bash-Skript (mein ~/bin/epoch ) :

#!/bin/bash

# get seconds since epoch
test "x$1" == x && date +%s && exit 0

# or convert epoch seconds to date format (see "man date" for options)
EPOCH="$1"
shift
date -d @"$EPOCH" "$@"

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X