Nástroj, který hledáte, je faketime .
faketime 'yesterday 9am' /bin/date
faketime '2018-10-25 16:45' /bin/date
Je možné použít libovolný název časového pásma, který neexistuje, a nastavit čas až na +- 24 hodin. Za předpokladu, že MYFAKETIME neexistuje jako platné časové pásmo (zatím neexistuje, ale může být definováno v budoucnu (velmi nepravděpodobné)), pak je to možné:
example@unixlinux.online:~$ date
Sun Sep 30 01:22:05 EST 2018
example@unixlinux.online:~$ TZ=MYFAKETIME date
Sun Sep 30 06:22:43 MYFAKETIME 2018
example@unixlinux.online:~$ TZ=MYFAKETIME+1 date
Sun Sep 30 05:22:56 MYFAKETIME 2018
example@unixlinux.online:~$ TZ=MYFAKETIME+10 date
Sat Sep 29 20:23:00 MYFAKETIME 2018
example@unixlinux.online:~$ TZ=MYFAKETIME+20 date
Sat Sep 29 10:23:05 MYFAKETIME 2018
example@unixlinux.online:~$ TZ=MYFAKETIME+24 date
Sat Sep 29 06:23:08 MYFAKETIME 2018
example@unixlinux.online:~$ TZ=MYFAKETIME+48 date
Sat Sep 29 06:23:14 MYFAKETIME 2018
example@unixlinux.online:~$ TZ=MYFAKETIME+96 date
Sat Sep 29 06:23:25 MYFAKETIME 2018
example@unixlinux.online:~$
Všimněte si, že časová pásma nad 24 prostě nefungují. Ne změnit čas, ale jsou omezeny na rozsah -24 až +24 . Od 21.4.7 Určení časového pásma pomocí TZ
První formát se používá, když v místním časovém pásmu není letní čas (nebo letní čas):
std offsetŘetězec std určuje název časové zóny. Musí obsahovat tři nebo více znaků dlouhé a nesmí obsahovat úvodní dvojtečku, vložené číslice, čárky ani znaménka plus a mínus. Název časové zóny od offsetu neodděluje žádný znak mezery, takže tato omezení jsou nezbytná pro správnou analýzu specifikace.
Posun určuje hodnotu času, kterou musíte přidat k místnímu času, abyste získali hodnotu koordinovaného světového času. Má syntaxi jako [+|-]hh[:mm[:ss]]. To je kladné, pokud je místní časové pásmo západně od nultého poledníku, a záporné, pokud je na východ. Hodina musí být mezi 0 a 24 a minuty a sekundy mezi 0 a 59.
Neexistuje tedy žádný způsob, jak změnit čas na „dny do budoucnosti“ pomocí proměnné TZ.
Skutečným řešením je použití faketime utility (ze stejnojmenného balíčku).
To vám umožní:
example@unixlinux.online:~$ faketime '2008-12-24 08:15:42' /bin/date
Wed Dec 24 08:15:42 EST 2008
example@unixlinux.online:~$ date
Sun Sep 30 01:44:29 EST 2018
Stačí nastavit TZ variabilní. Pozitivní hodnoty jdou na východ, stejně jako pozadu GMT.
např.
$ TZ=GMT date
Sat Sep 29 19:12:30 GMT 2018
$ TZ=FAKEEAST+15 date
Sat Sep 29 04:12:36 FAKEEAST 2018
$ TZ=FAKEWEST-15 date
Sun Sep 30 10:12:41 FAKEWEST 2018
To vám umožní jít pouze +/- 24 hodin.