How to move system clock time forward/backward?
The command to set the system time is date
. You need to be root to set the system time. date
sets the time to the given time, not to a relative amount from the current time, because that latter behavior would be pretty pointless. You can build a command that modifies the current time by a relative amount by making a calculation on the output of date
and feeding it back to date
, e.g. (on non-embedded Linux)
date $(date +%m%d%H%M%Y.%S -d '1 hour ago')
Beware that if you're running a timekeeping system such as NTP, changing the clock like this will confuse it. Stop it first.
Running date
sets the system time, not the hardware clock. Under Linux, run hwclock --systohc
to copy the system time to the hardware clock; this is done automatically on a clean shutdown.
If you wanted to see the time in a different timezone, forget all this and set the desired timezone instead. Under Linux, run tzselect
to set the system timezone. To run a program in a different timezone, set the TZ
environment variable, e.g.
export TZ=Asia/Tokyo
emacs
If you want to run a program and make it believe that the time is different from what it really is, run it under the program faketime
.
faketime '1 hour ago' date
You can also use the following format to get the amount of time ahead of the current time:
$ 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
Also you can use ago
for a time before the current date:
$ date
Fri Aug 18 16:14:41 CST 2017
$ date --date='1 month 2 days ago'
Sat Sep 16 16:14:43 CST 2017
You can use the --set
option for setting time but adding a +
sign before the number of hours, minutes, etc, that you want to add to the actual date:
$ 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
I hope this is helpful.
date -Ins -s $(date -Ins -d '-1 hour')