É possível usar qualquer nome de fuso horário que não exista e definir o tempo de até + - 24 horas. Assumindo que MYFAKETIME
não exista como um fuso horário válido (ainda não existe, mas pode ser definido no futuro (muito improvável)), então, isso é possível:
isaac@mail:~$ date
Sun Sep 30 01:22:05 EST 2018
isaac@mail:~$ TZ=MYFAKETIME date
Sun Sep 30 06:22:43 MYFAKETIME 2018
isaac@mail:~$ TZ=MYFAKETIME+1 date
Sun Sep 30 05:22:56 MYFAKETIME 2018
isaac@mail:~$ TZ=MYFAKETIME+10 date
Sat Sep 29 20:23:00 MYFAKETIME 2018
isaac@mail:~$ TZ=MYFAKETIME+20 date
Sat Sep 29 10:23:05 MYFAKETIME 2018
isaac@mail:~$ TZ=MYFAKETIME+24 date
Sat Sep 29 06:23:08 MYFAKETIME 2018
isaac@mail:~$ TZ=MYFAKETIME+48 date
Sat Sep 29 06:23:14 MYFAKETIME 2018
isaac@mail:~$ TZ=MYFAKETIME+96 date
Sat Sep 29 06:23:25 MYFAKETIME 2018
isaac@mail:~$
Observe que fusos horários acima de 24 simplesmente não funcionam. Eles fazem não alterar a hora, mas estão limitados ao intervalo -24
to +24
. De 21.4.7 Especificando o fuso horário com TZ
The first format is used when there is no Daylight Saving Time (or summer time) in the local time zone:
std offset
The std string specifies the name of the time zone. It must be three or more characters long and must not contain a leading colon, embedded digits, commas, nor plus and minus signs. There is no space character separating the time zone name from the offset, so these restrictions are necessary to parse the specification correctly.
The offset specifies the time value you must add to the local time to get a Coordinated Universal Time value. It has syntax like [+|-]hh[:mm[:ss]]. This is positive if the local time zone is west of the Prime Meridian and negative if it is east. The hour must be between 0 and 24, and the minute and seconds between 0 and 59.
Portanto, não há como alterar o tempo para "dias no futuro" usando a variável TZ.
A solução real é usar o utilitário faketime
(do pacote com o mesmo nome).
Isso permitirá que você faça:
isaac@mail:~$ faketime '2008-12-24 08:15:42' /bin/date
Wed Dec 24 08:15:42 EST 2008
isaac@mail:~$ date
Sun Sep 30 01:44:29 EST 2018