Wenn Ihre Dauer immer kürzer als ein Tag ist, können Sie das +%TFormat Stunden: Minuten: Sekunden verwenden date +%T "1970-01-01 + ${seconds} seconds", um 21:33:09
Folgendes
7
Gutschrift geht an Stéphane Gimenez, aber wenn jemand nur Sekunden anzeigen möchte, wenn ein Punkt weniger als eine Minute beträgt, ist hier meine modifizierte Version, die ich verwende (auch mit fester Pluralisierung):
Oben gebe ich die Ausgabe eines anderen Befehls wieder, der im $( ... )Unterbefehl ausgeführt wird. Dieser Unterbefehl berechnet dazu die Anzahl der Tage (Sekunden / 86400) und verwendet dann den dateBefehl in einem anderen Unterbefehl $(date -d ... ), um die Stunden, Minuten und Sekunden für eine bestimmte Anzahl von Sekunden zu generieren.
Ich baue auf Attis Antwort auf, die mir als Idee gefallen hat.
Sie können dies mit der eingebauten Bash tun printf, die die Sekunden seit der Epoche als Argument verwendet. Zum Laufen muss man nicht verzweigen date.
Sie müssen die Zeitzone auf UTC einstellen, printfda sie die Zeit in Ihrer lokalen Zeitzone formatiert und Sie die falsche Antwort erhalten, wenn Sie nicht in UTC sind.
date --date '@1005454800'gibt dir Sun Nov 11 00:00:00 EST 2001, was 1005454800 Sekunden nach der Unix-Epoche ist. Sie können dies mit der Option Datum + FORMAT formatieren.
Antworten:
Sie können so etwas verwenden:
Beispiele:
quelle
Der einfachste und sauberste Weg ist dieser eine Liner (hier unter der Annahme von GNU
date
):Wenn die Anzahl der Sekunden ist, sagen Sie:
-> Ausgabe:
1428 days 21 hours 33 minutes 09 seconds
quelle
+%T
Format Stunden: Minuten: Sekunden verwendendate +%T "1970-01-01 + ${seconds} seconds"
, um21:33:09
Gutschrift geht an Stéphane Gimenez, aber wenn jemand nur Sekunden anzeigen möchte, wenn ein Punkt weniger als eine Minute beträgt, ist hier meine modifizierte Version, die ich verwende (auch mit fester Pluralisierung):
Ein alternatives Beispiel in POSIX:
quelle
convert $s
, um eine hübsche Ausgabe zu erhalten.Ich würde es so machen:
Hier ist der Einzeiler oben, aufgeschlüsselt, damit es einfacher zu verstehen ist:
Oben gebe ich die Ausgabe eines anderen Befehls wieder, der im
$( ... )
Unterbefehl ausgeführt wird. Dieser Unterbefehl berechnet dazu die Anzahl der Tage (Sekunden / 86400) und verwendet dann dendate
Befehl in einem anderen Unterbefehl$(date -d ... )
, um die Stunden, Minuten und Sekunden für eine bestimmte Anzahl von Sekunden zu generieren.quelle
Ich habe die Anzeigezeitfunktion oben geändert ... wie folgt:
weil ich immer HH: MM: SS sehen will, auch wenn sie Nullen sind.
quelle
Ich baue auf Attis Antwort auf, die mir als Idee gefallen hat.
Sie können dies mit der eingebauten Bash tun
printf
, die die Sekunden seit der Epoche als Argument verwendet. Zum Laufen muss man nicht verzweigendate
.Sie müssen die Zeitzone auf UTC einstellen,
printf
da sie die Zeit in Ihrer lokalen Zeitzone formatiert und Sie die falsche Antwort erhalten, wenn Sie nicht in UTC sind.In meiner Ortszeit (derzeit NZDT - +1300) ist die Antwort falsch, wenn ich die Zeitzone nicht einstelle
Mit und ohne Zeitzone
quelle
printf
diese%(datefmt)T
Notation beginnend mit bash-4.2-alpha eingeführt hat.Hier einer
Ausgabe:
quelle
date --date '@1005454800'
gibt dirSun Nov 11 00:00:00 EST 2001
, was 1005454800 Sekunden nach der Unix-Epoche ist. Sie können dies mit der Option Datum + FORMAT formatieren.quelle