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')