由于我经常搬家,我需要经常改变时区。我在 Arch/Xfce 上。我怎样才能做到这一点?我尝试右键单击顶部面板上的手表 - >属性 - >时间设置 - >时区。它不起作用。当我输入时区时,它不会自动完成,也不会显示建议。然而,当我输入它并按“确定”时,时间不会根据新时区而改变。
这样做的正确方法是什么?
答案1
只需输入一个命令即可简单:
timedatectl set-timezone Zone/SubZone
您用正确的数据替换区域/子区域的位置。您可以通过键入以下内容获取所有可用时区的列表:
timedatectl list-timezones
如果您想让 RTC(硬件时钟)使用本地时间,请运行以下命令:
timedatectl set-local-rtc 1
如果您更喜欢 UTC 时间的 RTC,请使用以下选项:
timedatectl set-local-rtc 0
答案2
我很惊讶这是多么不平凡,所以我写了一个脚本:
tz-set Asia/Bangkok
或者,从列表中选择时区:
tz-set
以下脚本还更新时区:
xfce4-panel
时钟小部件/etc/timezone
(timedatectl set-timezone
不更新/etc/timezone
)
#!/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
答案3
如果您不知道当前时区,最简单的解决方案
timedatectl set-timezone "$(curl --fail https://ipapi.co/timezone)"