如何向前/向後移動系統時鐘時間?

如何向前/向後移動系統時鐘時間?

我知道用於設定特定時間和/或日期的命令,但找不到相對於當前時間移動時間的命令。

將時間向前/向後移動 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」選項,它允許超級用戶將時鐘向前或向後調整一些秒數。

相關內容