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.


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

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

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.


+1 secfunktioniert auch
smac89
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.