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

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

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

将时间向前/向后移动 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”选项,它允许超级用户将时钟向前或向后调整一些秒数。

相关内容