2013-04-22 2 views
6

In Linux kann date mir helfen, die aktuelle Zeit zu drucken. Wenn ich die aktuelle Zeit + 1 Stunde drucken möchte, welche Option soll ich geben?Fügen Sie eine bestimmte Zeit hinzu, während Sie den Linux-Befehl "date" verwenden

+1

Wenn Sie Zeitzonenkorrekturen versuchen, sehen Sie sich die 'TZ'-Umgebungsvariablen an und speichern Sie die Daten in UTC! – sehe

+0

Ich möchte nur die aktuelle Zeit und 1 Stunde später als die Eingänge meines anderen Codes erhalten, danke. – waitingkuo

+1

Gut, mein Geld ist auf der am meisten uploged Antwort dann :) (+1 von mir) – sehe

Antwort

24

Verwenden Sie einfach -d (oder --date) etwas Mathematik mit den Daten zu tun:

date -d '+1 hour' '+%F %T' 
# ^^^^^^^^^^^^ 

Zum Beispiel:

$ date '+%F %T' 
2013-04-22 10:57:24 
$ date -d '+1 hour' '+%F %T' 
2013-04-22 11:57:24 
#   ^
+0

Wir können auch Zeit zu einem bestimmten Datum hinzufügen, so: $ date -d "16. Mai 10:41:56 EDT 2017 + 12360.471 Sekunden" Di 16 Mai 14:07:56 EDT 2017 –

0

TZ=Asia/Calcutta date sollte funktionieren (offensichtlich wird dies die Zeit in Kalkutta bekommen).

Dadurch wird die Umgebungsvariable TimeZone (TZ) nur für diesen Vorgang geändert. Dadurch wird die neue Zeitzone, die Sie angeben, nicht dauerhaft festgelegt.

+3

Husten! Während ich nach Zeitzonen fragen wollte, ist das Festcodieren für ** Ihre ** zufällige lokale Zeitzone ... sehr wahrscheinlich nicht das, was das OP tun muss. – sehe

+0

Das ändert nichts dauerhaft @sehe, es ändert nur die Variable für den Umfang einer einzelnen Operation. Wenn er "Europa/London" oder "Amerika/Chicago" will, kann er diese einfach ersetzen. –

+0

Es tut mir leid, aber das ist einfach falsch. Es scheint die meiste Zeit zu funktionieren, aber irgendwann wird es scheitern. Zum Beispiel, wenn das Ziel TZ auf Sommerzeit geschaltet hat, aber Ihre nicht. – Schnouki

1

Nach dieser source Sie können einfach tun:

Datum - Datum = '1 Stunde'

0

Wir können es unter Code zu bekommen, ich war ein Fall bearbeitet, wobei i erforderlich, um Daten aus den letzten 3 Monaten zu durchqueren, i unten Code verwendet die gleiche

!/Bin/sh

for i in {90..1} 
    do 
    st_dt=$(date +%F' 00:00:00' -d "-$i days") 
    echo $st_dt 
    j=$((i-1)) 
    end_dt=$(date +%F' 00:00:00' -d "-$j days") 
    echo $end_dt 
    done 
zu durchqueren
0

In Shell-Skript, wenn wir unter Befehl und Datumsformat (PUT TIME vor dem DATE String)

date -d"11:15:10 2017-02-05 +2 hours" +"%Y-%m-%d %H:%m:%d" erhalten Sie folgende Ausgabe 2017-02-05 13:15:10

verwenden, um Zeit dann hinzufügen müssen
Verwandte Themen