Как я могу легко изменить свой часовой пояс в Arch / Xfce?

10

Поскольку я двигаюсь, мне нужно часто менять часовые пояса. Я на Arch / Xfce. Как я могу это сделать? Я попробовал щелкнуть правой кнопкой мыши часы на верхней панели -> свойства -> настройки времени -> часовой пояс. Это не сработало. Когда я набираю часовой пояс, он не заполняется автоматически и не отображает предложения. Тем не менее, когда я вхожу в него и нажимаю ОК, время не меняется в соответствии с новым часовым поясом.

Какой правильный способ сделать это?

Johshi
источник
1
Вы можете попробовать timedatectl
ckruczek

Ответы:

14

Это так же просто, как набрать всего одну команду:

timedatectl set-timezone Zone/SubZone

Где вы заменяете Zone / SubZone правильными данными. Вы можете получить список всех доступных часовых поясов, набрав:

timedatectl list-timezones

Если вы хотите, чтобы ваш RTC (аппаратные часы) использовал местное время, выполните следующую команду:

timedatectl set-local-rtc 1

Если вы предпочитаете свой RTC в UTC, используйте этот:

timedatectl set-local-rtc 0
Якуб
источник
теперь мое время опережает мое предыдущее время на количество часов, в котором находится мой текущий часовой пояс: таким образом, это +7 текущего времени. Почему?
Johshi
У вас установлен RTC на местный или UTC? Если установлено локальное значение, используйте следующую команду: timedatectl set-local-rtc 1, если не указано иное: timedatectl set-local-rtc 0
Jakub
Я не знаю, как я могу проверить?
Johshi
что не имеет значения, что я хочу, дело в том, что «timedatectl set-timezone Zone / SubZone» не установил время правильно. Поможет ли мне timedatectl set-local-rtc и как?
Johshi
Вы можете проверить свои часы реального времени (RTC) с помощью timedatectl status. Я рекомендую установить его на универсальное время (UTC), поскольку все остальное (включая ваше местное время!) Определяется как смещение UTC. Также обратите внимание, что это работает не только для Arch Linux и XFCE.
Адам Кац
1

Я был удивлен, насколько это было нетривиально, поэтому я написал сценарий:

tz-set Asia/Bangkok

Или выбрать часовой пояс из списка:

tz-set

Следующий скрипт также обновляет часовой пояс в:

#!/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
Том Хейл
источник