GNU/Linux >> Tutoriels Linux >  >> Linux

Linux :définir un décalage de fuseau horaire qui n'existe pas ?

L'outil que vous recherchez est faketime .

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

Il est possible d'utiliser n'importe quel nom de fuseau horaire qui n'existe pas et de régler l'heure jusqu'à +- 24 heures. En supposant que MYFAKETIME n'existe pas en tant que fuseau horaire valide (il n'existe pas encore, mais peut être défini dans le futur (très peu probable)), alors c'est possible :

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

Notez que les fuseaux horaires supérieurs à 24 ne fonctionnent tout simplement pas. Ils ne le font pas modifier l'heure mais sont limités à la plage -24 à +24 . A partir de 21.4.7 Spécifier le fuseau horaire avec TZ

Le premier format est utilisé lorsqu'il n'y a pas d'heure d'été (ou d'heure d'été) dans le fuseau horaire local :

std offset

La chaîne std spécifie le nom du fuseau horaire. Il doit comporter trois caractères ou plus long et ne doit pas contenir de deux-points au début, de chiffres incorporés, de virgules, ni de signes plus et moins. Il n'y a pas de caractère espace séparant le nom du fuseau horaire du décalage, ces restrictions sont donc nécessaires pour analyser correctement la spécification.

Le décalage spécifie la valeur de temps que vous devez ajouter à l'heure locale pour obtenir une valeur de temps universel coordonné. Il a une syntaxe comme [+|-]hh[:mm[:ss]]. Ceci est positif si le fuseau horaire local est à l'ouest du premier méridien et négatif s'il est à l'est. L'heure doit être entre 0 et 24 , et les minutes et secondes entre 0 et 59.

Il n'y a donc aucun moyen de changer l'heure en "jours dans le futur" à l'aide de la variable TZ.

La vraie solution est d'utiliser le faketime utilitaire (du package du même nom).

Cela vous permettra de faire :

[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

Définissez simplement le TZ variable. Les valeurs positives vont vers l'Est, donc derrière GMT.

par exemple

$ 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

Cela ne vous laissera partir que +/- 24 heures.


Linux
  1. Comment vérifier le fuseau horaire sous Linux

  2. Comment définir le fuseau horaire et synchroniser l'heure du serveur avec NTP sous Linux

  3. Comment définir ou modifier le fuseau horaire sous Linux

  4. Définir la date, l'heure et le fuseau horaire sur un serveur Linux

  5. Comment définir ou modifier le fuseau horaire sur Debain 11

Comment définir ou modifier le fuseau horaire dans Ubuntu Linux [Astuce du débutant]

Vérifier le fuseau horaire sous Linux

11 Exemples de commandes de date Linux utiles

Comment définir la date et l'heure sur Rocky Linux 8 Desktop et Server

Comment définir la date et l'heure sous Linux

Linux date Exemples de commandes