如何向前/向后移动系统时钟时间?

dzi*_*990 10 command-line time clock

我知道用于设置特定时间和/或日期的命令,但找不到相对于当前时间移动时间的命令。

将时间向前/向后移动 x 秒/分钟/小时的命令是什么?(也可能是天/月/年?)

Gil*_*il' 14

设置系统时间的命令是date。您需要以 root 身份设置系统时间。date将时间设置为给定的时间,而不是与当前时间的相对量,因为后者的行为将毫无意义。您可以构建一个命令,通过对 的输出进行计算date并将其反馈给date例如(在非嵌入式 Linux 上),以相对数量修改当前时间

date $(date +%m%d%H%M%Y.%S -d '1 hour ago')
Run Code Online (Sandbox Code Playgroud)

请注意,如果您正在运行 NTP 等计时系统,则像这样更改时钟会使其混淆。先停下来。

运行date设置系统时间,而不是硬件时钟。Linux下,运行hwclock --systohc将系统时间复制到硬件时钟;这是在干净关闭时自动完成的。

如果您想查看不同时区的时间,请忘记所有这些并设置所需的时区。在 Linux 下,运行tzselect以设置系统时区。要在不同的时区运行程序,请设置TZ环境变量,例如

export TZ=Asia/Tokyo
emacs
Run Code Online (Sandbox Code Playgroud)

如果您想运行一个程序并使其相信时间与实际时间不同,请在程序下运行它faketime

faketime '1 hour ago' date
Run Code Online (Sandbox Code Playgroud)

  • 或者`date -Ins -s $(date -Ins -d '-1 小时')` (2认同)

小智 7

您还可以使用以下格式来获取当前时间之前的时间量:

$ 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
Run Code Online (Sandbox Code Playgroud)

您也可以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
Run Code Online (Sandbox Code Playgroud)

您可以使用设置时间的--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
Run Code Online (Sandbox Code Playgroud)

我希望这是有帮助的。