GNU/Linux >> Linux Esercitazione >  >> Linux

Linux:impostare l'offset del fuso orario che non esiste?

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.


Linux
  1. Come controllare il fuso orario in Linux

  2. Come impostare il fuso orario e sincronizzare l'ora del server con NTP in Linux

  3. Imposta la data, l'ora e il fuso orario su un server Linux

  4. 7 Esempi di comandi della data di Linux per visualizzare e impostare la data e l'ora del sistema

  5. 7 Esempi di comandi hwclock di Linux per impostare la data e l'ora dell'orologio hardware

Come impostare o modificare il fuso orario in Ubuntu Linux [Suggerimento per principianti]

Controlla il fuso orario in Linux

11 Esempi utili di comandi data di Linux

Come impostare data e ora su desktop e server Rocky Linux 8

Come impostare data e ora su Linux

Esempi di comandi data di Linux