我知道用於設定特定時間和/或日期的命令,但找不到相對於當前時間移動時間的命令。
將時間向前/向後移動 x 秒/分鐘/小時的命令是什麼? (也可能是幾天/幾個月/幾年?)
答案1
設定係統時間的命令是date
。您需要成為 root 才能設定係統時間。date
將時間設定為給定時間,而不是當前時間的相對量,因為後一種行為是毫無意義的。您可以建立一個命令,透過對 的輸出進行計算date
並將其回饋給 來按相對量修改當前時間date
,例如(在非嵌入式 Linux 上)
date $(date +%m%d%H%M%Y.%S -d '1 hour ago')
請注意,如果您正在運行 NTP 等計時系統,像這樣更改時鐘會使其混亂。先停下來吧。
運行date
設定係統時間,而不是硬體時鐘。在Linux下,運行hwclock --systohc
將系統時間複製到硬體時鐘;這是在乾淨關閉時自動完成的。
如果您想查看不同時區的時間,請忘記所有這些並設定所需的時區。在Linux下,運行tzselect
設定係統時區。若要在不同時區執行程序,請設定TZ
環境變量,例如
export TZ=Asia/Tokyo
emacs
如果你想運行一個程式並讓它相信時間與實際時間不同,請在該程式下運行它faketime
。
faketime '1 hour ago' date
答案2
您也可以使用以下格式來取得目前時間之前的時間量:
$ date --date='1 month'
Sun Sep 17 15:01:11 CST 2017
$ date --date='1 month'
Sun Sep 17 15:01:15 CST 2017
$ date --date='1 month 2 hours'
Sun Sep 17 17:01:23 CST 2017
$ date --date='1 month 2 hours 3 minutes'
Sun Sep 17 17:04:30 CST 2017
您也可以使用ago
目前日期之前的時間:
$ date
Fri Aug 18 16:14:41 CST 2017
$ date --date='1 month 2 days ago'
Sat Sep 16 16:14:43 CST 2017
您可以使用該--set
選項環境時間,但+
在要加到實際日期的小時數、分鐘數等之前加上一個符號:
$ date
Thu Aug 17 15:07:00 CST 2017
$ date --set='+1 day +1 hour'
Fri Aug 18 16:07:24 CST 2017
$ date
Fri Aug 18 16:07:31 CST 2017
$ date --set='+1 month 3 days +1 hour'
Thu Sep 21 17:07:42 CST 2017
我希望這是有幫助的。
答案3
date -Ins -s $(date -Ins -d '-1 hour')
答案4
如果我沒記錯的話,在 UNIX SVR4 中,「date」指令有一個「-a」選項,它允許超級用戶將時鐘向前或向後調整一些秒數。