dateshift man page

dateshift — Moves system date for program under test


dateshift -t "<YYYY-MM-DD> [HH:MM:SS]" [ - <program> ]


Moves system date for program under test. Once the date is moved the clock continues ticking, so that the program under test is now in a time warp.

dateshift is generally more convienient than changing the system clock, and does not require root privileges.

If you do not specify a command then your shell will be run.

The dates and times are in ISO-8601 format. This means that dates are YEAR-MONTH-DAY and times are HOUR:MINUTE:SECOND. Hours are in 24-hour format.



Output help information and exit.


Specify the command to run in the date shifted environment


Output version information and exit.


Run in verbose output mode

Environment Variables


dateshift sets this to the number of seconds offset


dateshift uses LD_PRELOAD to intercept calls to time() and gettimeofday()


You can run a program at a different time like so:

dateshift -t 2001-01-01 - date

To run a time shifted shell to 20th Jan 2000 do:

dateshift -t 2001-01-20

Alternatively you can run it with a time as well

dateshift -t "2001-01-20 18:00:00"


dateshift works via the run time linker's LD_PRELOAD mechanism. It will therefore not work on statically linked executables.

Also dateshift does not wrap stat() or other file based functions. Therefore programs which get file timestamps will still see the true time rather than the shifted time.


Alex Hornby <>

See Also

date(1) time(2) gettimeofday(2)


1.0 Alex Hornby Test tools