GNU/Linux >> Znalost Linux >  >> Linux

Linux:Nastavit posun časového pásma, který neexistuje?

Nástroj, který hledáte, je faketime .

faketime 'yesterday 9am' /bin/date
faketime '2018-10-25 16:45' /bin/date

Je možné použít libovolný název časového pásma, který neexistuje, a nastavit čas až na +- 24 hodin. Za předpokladu, že MYFAKETIME neexistuje jako platné časové pásmo (zatím neexistuje, ale může být definováno v budoucnu (velmi nepravděpodobné)), pak je to možné:

[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]:~$ 

Všimněte si, že časová pásma nad 24 prostě nefungují. Ne změnit čas, ale jsou omezeny na rozsah -24+24 . Od 21.4.7 Určení časového pásma pomocí TZ

První formát se používá, když v místním časovém pásmu není letní čas (nebo letní čas):

std offset

Řetězec std určuje název časové zóny. Musí obsahovat tři nebo více znaků dlouhé a nesmí obsahovat úvodní dvojtečku, vložené číslice, čárky ani znaménka plus a mínus. Název časové zóny od offsetu neodděluje žádný znak mezery, takže tato omezení jsou nezbytná pro správnou analýzu specifikace.

Posun určuje hodnotu času, kterou musíte přidat k místnímu času, abyste získali hodnotu koordinovaného světového času. Má syntaxi jako [+|-]hh[:mm[:ss]]. To je kladné, pokud je místní časové pásmo západně od nultého poledníku, a záporné, pokud je na východ. Hodina musí být mezi 0 a 24 a minuty a sekundy mezi 0 a 59.

Neexistuje tedy žádný způsob, jak změnit čas na „dny do budoucnosti“ pomocí proměnné TZ.

Skutečným řešením je použití faketime utility (ze stejnojmenného balíčku).

To vám umožní:

[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

Stačí nastavit TZ variabilní. Pozitivní hodnoty jdou na východ, stejně jako pozadu GMT.

např.

$ 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

To vám umožní jít pouze +/- 24 hodin.


Linux
  1. Jak zkontrolovat časové pásmo v Linuxu

  2. Jak nastavit časové pásmo a synchronizovat čas serveru s NTP v Linuxu

  3. Jak nastavit nebo změnit časové pásmo v Linuxu

  1. Nastavte datum, čas a časové pásmo na serveru Linux

  2. Jak nastavit nebo změnit časové pásmo na Debain 11

  3. Nastavte systémové datum a čas pomocí C++ v Linuxu

  1. 7 Linux Date Příklady příkazů pro zobrazení a nastavení systémového data a času

  2. Nastavte časové pásmo debian Linux pomocí příkazového řádku

  3. Linux:nastavte datum pomocí příkazového řádku