Fügen Sie einem bestimmten Datum in Bash Sekunden hinzu

7

Ich habe ein vollständiges Datum plus Stunden und Minuten. Ich möchte eine Anzahl von Sekunden hinzufügen und das Ergebnis als Datum "Tag.Monat.Jahr Stunde: Minute" anzeigen.

"Datum" scheint nicht in der Lage zu sein, einem bestimmten Datum Sekunden hinzuzufügen.

Markus
quelle
BASH also habe ich Kommandozeile angenommen;)
Rinzwind

Antworten:

14

Tatsächlich kann der GNU- dateBefehl (die Standardimplementierung in Ubuntu) Datumsversätze direkt hinzufügen - beispielsweise um einem bestimmten Datum 3662 Sekunden (1 Stunde, 1 Minute, 2 Sekunden) hinzuzufügen

$ date '+%d.%b.%Y %T' --date="2012-06-13 09:16:16 EDT + 3662 seconds"
13.Jun.2012 10:17:18

Bei Zeitzonen und Sommerzeit ist jedoch einige Vorsicht geboten. Eine sicherere Option besteht wahrscheinlich darin, die ursprüngliche Zeit seit Beginn der Epoche in Sekunden umzuwandeln und den gewünschten Versatz zu diesem hinzuzufügen, bevor Sie wieder in das gewünschte Format konvertieren, z

$ secs=$(date +%s --date="2012-06-13 09:16:16")
$ date '+%d.%b.%Y %T' --date="@$((secs + 3662))"
13.Jun.2012 10:17:18
Steeldriver
quelle
2

So was:

$ date +%x.%H:%M:%S:%N
01/21/2014_16:02:07:422856522

Es zeigt Daten im US-Stil für mich, aber siehe Manndatum für weitere Verfeinerung. Die 2 interessanten Optionen:

%N     nanoseconds (000000000..999999999)
%S     second (00..60)

Und wenn Sie das Standardformat für Jahr, Monat und Tag verwenden möchten:

$ date +%Y.%m.%d_%H:%M:%S:%N
2014.07.21_16:07:52:641771706
Rinzwind
quelle
Warum brauchen Sie Nanosekunden?
Wilf
2
weil ich kann @wilf Er sagt: kann keine Sekunden hinzufügen. Ich sage: Ja und sogar Nanosekunden: +)
Rinzwind
Dies ist keine Antwort. Die Frage war, einige Sekunden bis heute hinzuzufügen und dann in einem Format darzustellen, das nicht einmal Sekunden / Nanosecods im Sinn hat
Paulius Šukys
Sie haben% M sowohl monatelang als auch minutenlang verwendet. Es sollte% m (Kleinbuchstaben) für den Monat sein. Antwort bearbeitet.
Albert Vaca Cintora
1

Sie können das aktuelle Datum auch einfach erhöhen mit:

date --date="+1 seconds" '+%Y-%m-%d %T'

man datesagt, dass dies in dokumentiert ist info date, aber ich habe jetzt keine Lust, infoHandbücher zu lesen , um es zu zitieren :-)

Getestet in Ubuntu 18.04 datevon Coreutils 8.28.

Ciro Santilli 冠状 病毒 审查 六四 事件 法轮功
quelle
+1 secfunktioniert auch
smac89