La herramienta que estás buscando es faketime
.
faketime 'yesterday 9am' /bin/date
faketime '2018-10-25 16:45' /bin/date
Es posible usar cualquier nombre de zona horaria que no exista y configurar el tiempo hasta +- 24 horas. Suponiendo que MYFAKETIME
no existe como una zona horaria válida (todavía no existe, pero puede definirse en el futuro (muy poco probable)), entonces, esto es posible:
[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]:~$
Tenga en cuenta que las zonas horarias superiores a 24 simplemente no funcionan. Ellos no cambiar el tiempo pero están limitados al rango -24
a +24
. Desde 21.4.7 Especificación de la zona horaria con TZ
El primer formato se usa cuando no hay horario de verano (u horario de verano) en la zona horaria local:
std offset
La cadena estándar especifica el nombre de la zona horaria. Debe tener tres o más caracteres de longitud y no debe contener dos puntos iniciales, dígitos incrustados, comas ni signos de más y menos. No hay un carácter de espacio que separe el nombre de la zona horaria del desplazamiento, por lo que estas restricciones son necesarias para analizar la especificación correctamente.
El desplazamiento especifica el valor de tiempo que debe agregar a la hora local para obtener un valor de tiempo universal coordinado. Tiene una sintaxis como [+|-]hh[:mm[:ss]]. Esto es positivo si la zona horaria local está al oeste del primer meridiano y negativa si está al este. La hora debe estar entre 0 y 24 , y los minutos y segundos entre 0 y 59.
Por lo tanto, no hay forma de cambiar el tiempo a "días en el futuro" usando la variable TZ.
La solución real es usar el faketime
utilidad (del paquete del mismo nombre).
Eso le permitirá hacer:
[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
Solo configura el TZ
variable. Los valores positivos van hacia el este, por lo que detrás GMT.
por ejemplo
$ 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
Esto solo te dejará ir +/- 24 horas.