回答:
たった1つのコマンドを入力するのと同じくらい簡単です。
timedatectl set-timezone Zone/SubZone
ゾーン/サブゾーンを正しいデータに置き換える場所。次のように入力すると、使用可能なすべてのタイムゾーンのリストを取得できます。
timedatectl list-timezones
RTC(ハードウェアクロック)に現地時間を使用する場合は、次のコマンドを実行します。
timedatectl set-local-rtc 1
UTCでRTCを使用する場合は、次のRTCを使用してください。
timedatectl set-local-rtc 0
timedatectl status
。他のすべて(ローカル時間を含む!)はUTCのオフセットとして定義されているため、世界時(UTC)に設定することをお勧めします。また、これはArch LinuxだけでなくXFCEだけでも機能することに注意してください。
これが簡単なことであることに驚いたので、脚本を書きました。
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