Comment puis-je facilement changer mon fuseau horaire dans Arch / Xfce?

10

Depuis que je me déplace, je dois changer fréquemment de fuseau horaire. Je suis sur Arch / Xfce. Comment puis je faire ça? J'ai essayé un clic droit sur la montre dans le panneau supérieur -> propriétés -> paramètres d'heure -> fuseau horaire. Ça n'a pas marché. Lorsque je tape un fuseau horaire, il ne se remplit pas automatiquement et n'affiche pas de suggestions. Quand j'y entre, néanmoins et appuie sur Ok, l'heure ne change pas selon un nouveau fuseau horaire.

Quelle est la bonne façon de procéder?

Johshi
la source
1
Vous pouvez essayer timedatectl
ckruczek

Réponses:

14

C'est aussi simple que de taper une seule commande:

timedatectl set-timezone Zone/SubZone

Où vous remplacez Zone / SubZone par des données correctes. Vous pouvez obtenir la liste de tous les fuseaux horaires disponibles en tapant:

timedatectl list-timezones

Si vous souhaitez que votre RTC (horloge matérielle) utilise l'heure locale, exécutez la commande suivante:

timedatectl set-local-rtc 1

Si vous préférez votre RTC à UTC, utilisez celui-ci:

timedatectl set-local-rtc 0
Jakub
la source
maintenant mon temps est en avance sur mon temps précédent par le nombre d'heures de mon fuseau horaire actuel: c'est donc +7 de l'heure actuelle. Pourquoi?
Johshi
Avez-vous votre RTC réglé sur local ou UTC? S'il est défini sur local, utilisez cette commande: timedatectl set-local-rtc 1 sinon: timedatectl set-local-rtc 0
Jakub
Je ne sais pas, comment puis-je vérifier?
Johshi
quel n'est pas le problème de ce que je veux, le problème est que "timedatectl set-timezone Zone / SubZone" n'a pas réglé l'heure correctement. timedatectl set-local-rtc m'aidera et comment?
Johshi
Vous pouvez vérifier votre horloge en temps réel (RTC) avec timedatectl status. Je recommande de le régler sur l'heure universelle (UTC) car tout le reste (y compris votre heure locale!) Est défini comme un décalage de l'UTC. Notez également que cela fonctionne au-delà d'Arch Linux et au-delà de XFCE.
Adam Katz
1

J'ai été surpris de voir à quel point ce n'était pas anodin, alors j'ai écrit un script:

tz-set Asia/Bangkok

Ou, pour choisir un fuseau horaire dans une liste:

tz-set

Le script suivant met également à jour le fuseau horaire dans:

#!/bin/bash
set -euo pipefail
program=${0##*/} # basename $0

usage () {
    >&2 printf 'Usage: %s [Region/City]\n' "$program"
    >&2 printf 'Set the system timezone\n'
    >&2 printf 'Will run tz-select to pick timezone if none given.\n'
}

# Process arguments
if [[ $# -gt 1 ]]; then  # 0 or 1 arguments only
    usage; exit 1
fi
if [[ $# -eq 0 ]]; then  # no timezone given - prompt
    timezone=$(tzselect)
else
    timezone=$1  # in timedatactl verificaiton we trust
fi

sudo timedatectl set-timezone "$timezone"

# `timedatectl set-timezone` doesn't update `/etc/timezone`
# https://unix.stackexchange.com/q/451709/143394
 <<<"$timezone" sudo tee /etc/timezone &> /dev/null

printf '\ntimedatectl says:\n'
timedatectl

# Update xfce4-panel clock
# https://unix.stackexchange.com/a/227405/143394
if property=$(xfconf-query -c xfce4-panel --list | grep timezone); then
    if [[ $(wc -l <<<"$property") -eq 1 ]]; then # only one clock widget
        xfconf-query -c xfce4-panel -p "$property" -s "$timezone"
        printf '\nUpdated xfce4-panel clock timezone to: %s\n' "$timezone"
    else
        >&2 printf 'Not changing multiple xfce4-panel properties:\n%s\n' "$property"
    fi
fi
Tom Hale
la source