GNU/Linux >> Tutoriales Linux >  >> Linux

Linux:¿Establecer un desplazamiento de zona horaria que no existe?

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.


Linux
  1. Cómo configurar o cambiar la zona horaria en Debain 11

  2. 7 ejemplos de comandos de fecha de Linux para mostrar y configurar la fecha y hora del sistema

  3. 7 ejemplos de comandos Linux hwclock para configurar la fecha y la hora del reloj del hardware

  4. Establezca la zona horaria de Debian Linux a través de la línea de comandos

  5. Linux:establezca la fecha a través de la línea de comando

Cómo configurar o cambiar la zona horaria en Ubuntu Linux [Consejo para principiantes]

Comprobar la zona horaria en Linux

11 ejemplos útiles de comandos de fecha de Linux

Cómo configurar la fecha y la hora en el escritorio y el servidor Rocky Linux 8

Cómo configurar la fecha y la hora en Linux

Ejemplos de comandos de fecha de Linux