GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux:Zeitzonen-Offset setzen, das nicht existiert?

Das gesuchte Tool ist faketime .

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

Es ist möglich, einen beliebigen Zeitzonennamen zu verwenden, der nicht existiert, und die Zeit auf +- 24 Stunden einzustellen. Angenommen, MYFAKETIME nicht als gültige Zeitzone existiert (noch nicht, aber vielleicht in der Zukunft definiert (sehr unwahrscheinlich)), dann ist dies möglich:

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

Beachten Sie, dass Zeitzonen über 24 einfach nicht funktionieren. Das tun sie nicht ändern die Uhrzeit, sind aber auf den Bereich -24 beschränkt bis +24 . Ab 21.4.7 Angabe der Zeitzone mit TZ

Das erste Format wird verwendet, wenn es in der lokalen Zeitzone keine Sommerzeit gibt:

std offset

Die std-Zeichenfolge gibt den Namen der Zeitzone an. Es müssen drei oder mehr Zeichen sein lang und darf keinen führenden Doppelpunkt, eingebettete Ziffern, Kommas sowie Plus- und Minuszeichen enthalten. Es gibt kein Leerzeichen, das den Zeitzonennamen vom Offset trennt, daher sind diese Einschränkungen erforderlich, um die Spezifikation korrekt zu analysieren.

Der Offset gibt den Zeitwert an, den Sie zur Ortszeit addieren müssen, um einen koordinierten Weltzeitwert zu erhalten. Es hat eine Syntax wie [+|-]hh[:mm[:ss]]. Dies ist positiv, wenn die lokale Zeitzone westlich des Nullmeridians liegt, und negativ, wenn sie östlich liegt. Die Stunde muss zwischen 0 und 24 liegen , und die Minute und Sekunden zwischen 0 und 59.

Es gibt also keine Möglichkeit, die Zeit mit der TZ-Variablen auf "Tage in der Zukunft" zu ändern.

Die wirkliche Lösung ist die Verwendung von faketime Dienstprogramm (aus dem gleichnamigen Paket).

Damit können Sie Folgendes tun:

[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

Stellen Sie einfach den TZ ein Variable. Positive Werte gehen nach Osten, also hinter GMT.

zB

$ 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

Dadurch können Sie nur +/- 24 Stunden gehen.


Linux
  1. So überprüfen Sie die Zeitzone in Linux

  2. So stellen Sie die Zeitzone ein und synchronisieren die Serverzeit mit NTP in Linux

  3. Stellen Sie Datum, Uhrzeit und Zeitzone auf einem Linux-Server ein

  4. Stellen Sie die Debian-Linux-Zeitzone über die Befehlszeile ein

  5. Linux:Datum über die Befehlszeile festlegen

So stellen oder ändern Sie die Zeitzone in Ubuntu Linux [Anfängertipp]

Überprüfen Sie die Zeitzone in Linux

11 Nützliche Beispiele für Linux-Datumsbefehle

So stellen Sie Datum und Uhrzeit auf Rocky Linux 8 Desktop und Server ein

So stellen Sie Datum und Uhrzeit unter Linux ein

Beispiele für Linux-Datumsbefehle