我知道用于设置特定时间和/或日期的命令,但找不到相对于当前时间移动时间的命令。
将时间向前/向后移动 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”选项,它允许超级用户将时钟向前或向后调整一些秒数。