Réglage du fuseau horaire depuis le terminal

174

Je souhaite modifier le fuseau horaire de l’horloge système depuis le terminal.

Cela peut être fait avec

tzselect

"qui ouvre une interface graphique dans le terminal"

ou

sudo cp /usr/share/zoneinfo/Europe/London /etc/localtime

"qui sera défini sur gmt"

Mais y a-t-il un moyen de définir le fuseau horaire avec juste le décalage, par exemple-1 ou +5, etc.?

Je dois faire ceci car j'écris une application pour ajuster le temps ou le journal des rapports et la seule information que j'ai est l'IP d'utilisateur. Je peux utiliser une application Web pour trouver l'emplacement de l'IP, mais je dois ensuite définir un décalage qui serait facile si je pouvais simplement obtenir le décalage de l'emplacement, mais si je devais trouver une zone et une ville, ce serait très difficile. .

Si quelqu'un sait comment régler l'horloge système à +/- heure, ce serait bien.

    
posée user2155009 22.07.2013 - 22:22
la source

8 réponses

271

Pour modifier le fuseau horaire depuis le terminal, appuyez simplement sur Ctrl + Alt + T sur votre clavier pour ouvrir le terminal. Lorsqu'il s'ouvre, exécutez la ou les commandes ci-dessous:

sudo dpkg-reconfigure tzdata

Une fois ouvert, suivez simplement les écrans pour modifier le fuseau horaire.

    
réponse donnée Mitch 23.07.2013 - 00:02
la source
140

Vous pouvez également utiliser le nouveau timedatectl pour définir l'heure en 14.04.

sudo timedatectl set-timezone America/New_York
    
réponse donnée Collin Anderson 15.09.2014 - 17:43
la source
17

Vous pouvez utiliser les fichiers GMT ± x dans /usr/share/zoneinfo/Etc .

sudo ln -fs /usr/share/zoneinfo/Etc/GMT$offset /etc/localtime
    
réponse donnée Ry- 22.07.2013 - 22:43
la source
16

Je me rends compte que ce sujet est un peu daté, mais je cherchais une meilleure solution parce que je devais définir automatiquement le fuseau horaire dans une VM après le téléchargement par un utilisateur de notre site Web et le déployer. Voici ce que j'ai fini avec:

echo "Setting TimeZone..."
export tz='wget -qO - http://geoip.ubuntu.com/lookup | sed -n -e 's/.*<TimeZone>\(.*\)<\/TimeZone>.*//p'' &&  timedatectl set-timezone $tz
export tz='timedatectl status| grep Timezone | awk '{print }''
echo "TimeZone set to $tz"

Ceci interrogera geoip.ubuntu.com à partir du serveur une fois qu'il est démarré sur le nouveau réseau (mon script vérifie d'abord la connectivité), puis définit le fuseau horaire du serveur en fonction de la réponse.

"wget ​​-q0 -" indique à wget de ne sortir que les résultats dans stdout, qui sont ensuite redirigés vers la variable $ tz.

J'espère que ça aide quelqu'un!

    
réponse donnée Clayton Dukes 25.12.2014 - 04:22
la source
10

TL; DR /etc/localtime est un lien symbolique qui pointe vers un fichier dans /usr/share/zoneinfo/Continent/City . En modifiant l'endroit où vous pointez, vous pouvez modifier votre fuseau horaire.

Pour modifier le fuseau horaire, supprimez le /etc/localtime et assignez un lien symbolique à la ville souhaitée. Par exemple, ls -l /etc/localtime indique que ce fichier pointe vers /usr/share/zoneinfo/America/Denver . Pour le changer à New York, je le fais

  1. sudo rm /etc/localtime
  2. sudo ln -s /usr/share/zoneinfo/America/New_York /etc/localtime
  3. Attendez une minute pour que mon horloge soit mise à jour

La capture d'écran ci-dessous montre les étapes et la confirmation de timedatectl

    
réponse donnée Sergiy Kolodyazhnyy 06.05.2015 - 04:21
la source
10

Le moyen le plus simple de mettre à jour le fuseau horaire est d'utiliser sudo dpkg-reconfigure tzdata . Mais ce n'est pas si facilement scripté.

Si vous souhaitez définir explicitement le fuseau horaire via un script (par exemple, pour configurer une machine virtuelle), voici une recette:

Définissez une variable pour le fuseau horaire souhaité, par exemple un de

tz=Europe/London
tz=America/Anchorage
tz=Etc/GMT+6

Les valeurs valides sont les répertoires et les noms de fichiers sous /usr/share/zoneinfo .

Alors simplement

sudo cp -vf /usr/share/zoneinfo/$tz /etc/localtime
echo $tz | sudo tee /etc/timezone

Notez que /etc/localtime et /etc/timezone doivent être cohérents.

Maintenant, redémarrez probablement pour que tous vos services soient également mis à jour (par exemple, cron).

    
réponse donnée Rick-777 13.05.2015 - 20:13
la source
3

Voici la méthode que j'utilise, centrée sur les États-Unis, car je n'ai pas besoin de m'inquiéter des fuseaux horaires non américains.

Si je dois déterminer le fuseau horaire actuel, je le fais soit:

cat /etc/timezone  

ou

sudo hwclock --show  

Je fais ensuite:

timedatectl set-timezone <_designation_>

<_designation_> est l'un des suivants:

US / Eastern
US / Central
US / Mountain
US / Pacific
US / Alaska
US / Aleutian
US / Arizona
États-Unis / Est-Indiana
US / Hawaii
US / Indiana-Starke
États-Unis / Michigan
US / Pacific-New
US / Samoa

E.G.:

timedatectl set-timezone US/Eastern  

D'autres désignations de fuseau horaire peuvent être trouvées ici: lien

    
réponse donnée Redblur 29.03.2017 - 21:04
la source
0

Vous ne pouvez pas le faire si vous ne sélectionnez pas le fichier de fuseau horaire que vous souhaitez correspondre à chaque décalage de fuseau horaire.

Certaines réponses suggèrent d’utiliser les fichiers dans / usr / share / zoneinfo / Etc, mais le problème est qu’ils sont agnostiques en DST.

Donc, à moins que vous ne choisissiez une configuration de fuseau horaire pour correspondre à chaque décalage, ou que vous ne vous souciez pas de l'heure d'été, il n'y a aucun moyen de le faire de manière générique.

    
réponse donnée Alex G 23.08.2015 - 19:52
la source

Lire d'autres questions sur les étiquettes