datefudge man page

datefudge — pretend the system time is different


datefudge [-s|--static] at_date program [arguments ...]


datefudge is a small utility that pretends that the system time is different by pre-loading a small library which modifies the time(2), gettimeofday(2) and clock_gettime(2) system calls.

Date Format

The at_date argument can be given in any format accepted by the date(1) program, for example "2007-04-01 12:21" or "yesterday", or "next Friday".


--static, -s

Mark the date as a `static' one.  The above mentioned system calls will always return the date given in the at_date argument, regardless of time passing. See Examples

--help, -h

Print short usage information and exit.

--version, -v

Print version information and exit.


Basic examples

$ datefudge "2007-04-01 10:23" date -R
Sun, 01 Apr 2007 10:23:00 +0200

$ datefudge "1 May 2007" date -R
Tue, 01 May 2007 00:00:00 +0200

$ datefudge "2 weeks ago" date -R
Wed, 16 Jan 2008 13:32:12 +0100

Non-static vs. static example

$ datefudge "2007-04-01 10:23" sh -c "sleep 3; date -R"
Sun, 01 Apr 2007 10:23:03 +0200

$ datefudge --static "2007-04-01 10:23" sh -c "sleep 3; date -R"
Sun, 01 Apr 2007 10:23:00 +0200


Written by Matthias Urlichs <>. Modified by Robert Luberda <>.


There is no attempt to make this change undetectable by the program. In particular, file modification times are not modified.

On systems using 32-bit representation of time, datefudge is affected by the year 2038 problem, which might cause dates to be wrapped around, for instance:

$ TZ=UTC datefudge "2038-01-19 03:14:07" sh -c "sleep 1; date -R"
Fri Dec 13 20:45:53 UTC 1901

See Also

date(1),, time(2), gettimeofday(2), clock_gettime(2)


February 4th, 2017 datefudge 1.22 Debian