Lo strumento che stai cercando è faketime
.
faketime 'yesterday 9am' /bin/date
faketime '2018-10-25 16:45' /bin/date
È possibile utilizzare qualsiasi nome di fuso orario che non esiste e impostare l'ora fino a +- 24 ore. Supponendo che MYFAKETIME
non esiste come fuso orario valido (non esiste ancora, ma potrebbe essere definito in futuro (molto improbabile)), quindi è possibile:
[email protected]:~$ date
Sun Sep 30 01:22:05 EST 2018
[email protected]:~$ TZ=MYFAKETIME date
Sun Sep 30 06:22:43 MYFAKETIME 2018
[email protected]:~$ TZ=MYFAKETIME+1 date
Sun Sep 30 05:22:56 MYFAKETIME 2018
[email protected]:~$ TZ=MYFAKETIME+10 date
Sat Sep 29 20:23:00 MYFAKETIME 2018
[email protected]:~$ TZ=MYFAKETIME+20 date
Sat Sep 29 10:23:05 MYFAKETIME 2018
[email protected]:~$ TZ=MYFAKETIME+24 date
Sat Sep 29 06:23:08 MYFAKETIME 2018
[email protected]:~$ TZ=MYFAKETIME+48 date
Sat Sep 29 06:23:14 MYFAKETIME 2018
[email protected]:~$ TZ=MYFAKETIME+96 date
Sat Sep 29 06:23:25 MYFAKETIME 2018
[email protected]:~$
Tieni presente che i fusi orari superiori a 24 non funzionano. Non cambiano l'ora ma sono limitati all'intervallo -24
a +24
. Da 21.4.7 Specificare il fuso orario con TZ
Il primo formato viene utilizzato quando non c'è l'ora legale (o l'ora legale) nel fuso orario locale:
std offset
La stringa std specifica il nome del fuso orario. Deve contenere tre o più caratteri lungo e non deve contenere due punti iniziali, cifre incorporate, virgole, né segni più e meno. Non esiste uno spazio che separa il nome del fuso orario dall'offset, quindi queste restrizioni sono necessarie per analizzare correttamente la specifica.
L'offset specifica il valore dell'ora che devi aggiungere all'ora locale per ottenere un valore di Coordinated Universal Time. Ha una sintassi come [+|-]hh[:mm[:ss]]. Questo è positivo se il fuso orario locale è ad ovest del Primo Meridiano e negativo se è ad est. L'ora deve essere tra 0 e 24 , e i minuti ei secondi compresi tra 0 e 59.
Quindi, non c'è modo di cambiare l'ora in "giorni nel futuro" usando la variabile TZ.
La vera soluzione è usare il faketime
utility (dal pacchetto con lo stesso nome).
Questo ti permetterà di fare:
[email protected]:~$ faketime '2008-12-24 08:15:42' /bin/date
Wed Dec 24 08:15:42 EST 2008
[email protected]:~$ date
Sun Sep 30 01:44:29 EST 2018
Basta impostare il TZ
variabile. I valori positivi vanno a est, così come dietro GMT.
es
$ 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
Questo ti lascerà andare solo +/- 24 ore.