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?
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?
Ich möchte nur hinzufügen.
Ermittelt die Sekunden seit der Epoche (1. Januar 1970) für ein beliebiges Datum (z. B. 21. Oktober 1973).
date -d "Oct 21 1973" +%s
Konvertiert die Anzahl der Sekunden in ein Datum zurück
date --date @120024000
Der Befehl date
ist ziemlich vielseitig. Eine weitere coole Sache, die man mit Datteln machen kann (schamlos kopiert von date --help
). Zeigen Sie die Ortszeit für 9 Uhr nächsten Freitag an der Westküste der USA an
date --date='TZ="America/Los_Angeles" 09:00 next Fri'
Noch besser ist es, sich die Zeit zu nehmen, die Manpage zu lesen http://man7.org/linux/man-pages/man1/date.1.html
Desde bash
5.0 ( veröffentlicht am 7. Jan. 2019 ) können Sie die eingebaute Variable EPOCHSECONDS
.
$ echo $EPOCHSECONDS
1547624774
もあります。 EPOCHREALTIME
die Bruchteile von Sekunden einschließt.
$ echo $EPOCHREALTIME
1547624774.371210
EPOCHREALTIME
kann durch Entfernen des Dezimalpunkts in Mikrosekunden (s) umgewandelt werden. Dies könnte von Interesse sein, wenn man bash
die eingebaute Arithmetik (( expression ))
die nur ganze Zahlen verarbeiten kann.
$ echo ${EPOCHREALTIME/./}
1547624774371210
In allen obigen Beispielen sind die gedruckten Zeitwerte zur besseren Lesbarkeit gleich. In Wirklichkeit wären die Zeitwerte unterschiedlich, da jeder Befehl eine kleine Zeitspanne für seine Ausführung benötigt.
Bislang verwenden alle Antworten das externe Programm date
.
Seit Bash 4.2, printf
hat einen neuen Modifikator %(dateformat)T
die, wenn sie mit dem Argument -1
gibt das aktuelle Datum im Format aus, das durch dateformat
, bearbeitet von strftime(3)
( man 3 strftime
für Informationen über die Formate).
Also, für eine reine Bash-Lösung:
printf '%(%s)T\n' -1
oder wenn Sie das Ergebnis in einer Variablen speichern müssen var
:
printf -v var '%(%s)T' -1
Keine externen Programme und keine Subshells!
Seit Bash 4.3 ist es sogar möglich, die Option -1
:
printf -v var '%(%s)T'
(aber es könnte klüger sein, immer das Argument -1
nichtsdestotrotz).
Wenn Sie -2
als Argument anstelle von -1
verwendet die Bash die Zeit, zu der die Shell gestartet wurde, anstelle des aktuellen Datums. Dies kann verwendet werden, um verstrichene Zeiten zu berechnen
$ printf -v beg '%(%s)T\n' -2
$ printf -v now '%(%s)T\n' -1
$ echo beg=$beg now=$now elapsed=$((now-beg))
beg=1583949610 now=1583953032 elapsed=3422
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.
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.