Wie kann ich meine Zeitzone in Arch / Xfce einfach ändern?

10

Da ich mich bewege, muss ich häufig die Zeitzonen wechseln. Ich bin auf Arch / Xfce. Wie kann ich das machen? Ich habe versucht, mit der rechten Maustaste auf die Uhr im oberen Bereich zu klicken -> Eigenschaften -> Zeiteinstellungen -> Zeitzone. Es hat nicht funktioniert. Wenn ich eine Zeitzone eingebe, wird diese nicht automatisch vervollständigt und es werden keine Vorschläge angezeigt. Wenn ich es trotzdem eingebe und OK drücke, ändert sich die Zeit nicht entsprechend einer neuen Zeitzone.

Was ist der richtige Weg, um das zu tun?

Johshi
quelle
1
Sie können timedatectl
ckruczek

Antworten:

14

Es ist so einfach wie das Eingeben von nur einem Befehl:

timedatectl set-timezone Zone/SubZone

Wo Sie Zone / SubZone durch korrekte Daten ersetzen. Sie können eine Liste aller verfügbaren Zeitzonen erhalten, indem Sie Folgendes eingeben:

timedatectl list-timezones

Wenn Sie möchten, dass Ihre RTC (Hardware-Uhr) die Ortszeit verwendet, führen Sie den folgenden Befehl aus:

timedatectl set-local-rtc 1

Wenn Sie Ihre RTC bei UTC bevorzugen, verwenden Sie diese:

timedatectl set-local-rtc 0
Jakub
quelle
Jetzt ist meine Zeit meiner vorherigen Zeit um die Anzahl der Stunden voraus, die meine aktuelle Zeitzone hat: Es sind also +7 der aktuellen Zeit. Warum?
Johshi
Haben Sie Ihre RTC auf lokal oder UTC eingestellt? Wenn es auf local eingestellt ist, verwenden Sie diesen Befehl: timedatectl set-local-rtc 1, falls nicht: timedatectl set-local-rtc 0
Jakub
Ich weiß nicht, wie kann ich das überprüfen?
Johshi
Was ist nicht los mit dem, was ich will? Die Sache ist, dass "timedatectl set-timezone Zone / SubZone" die Zeit nicht richtig eingestellt hat. hilft mir timedatectl set-local-rtc und wie?
Johshi
Sie können Ihre Echtzeituhr (RTC) mit überprüfen timedatectl status. Ich empfehle die Einstellung auf Universalzeit (UTC), da alles andere (einschließlich Ihrer Ortszeit!) Als Versatz von UTC definiert ist. Beachten Sie auch, dass dies nicht nur über Arch Linux und nur über XFCE hinaus funktioniert.
Adam Katz
1

Ich war überrascht, wie trivial das war, also schrieb ich ein Drehbuch:

tz-set Asia/Bangkok

Oder um eine Zeitzone aus einer Liste auszuwählen:

tz-set

Das folgende Skript aktualisiert auch die Zeitzone in:

#!/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
quelle