Bagaimana saya bisa dengan mudah mengubah zona waktu saya di Arch / Xfce?

10

Karena saya bergerak, saya harus sering mengubah zona waktu. Saya di Arch / Xfce. Bagaimana saya bisa melakukan itu? Saya sudah mencoba klik kanan pada arloji di panel atas -> properti -> pengaturan waktu -> zona waktu. Itu tidak berhasil. Saat saya mengetik zona waktu, zona waktu itu tidak dilengkapi secara otomatis dan tidak menampilkan saran. Ketika saya memasukinya, namun dan tekan OK, waktu tidak berubah sesuai dengan zona waktu baru.

Apa cara yang tepat untuk melakukan itu?

Johshi
sumber
1
Anda dapat mencoba timedatectl
ckruczek

Jawaban:

14

Sesederhana mengetik hanya dalam satu perintah:

timedatectl set-timezone Zone/SubZone

Di mana Anda mengganti Zone / SubZone dengan data yang benar. Anda dapat memperoleh daftar semua zona waktu yang tersedia dengan mengetik:

timedatectl list-timezones

Jika Anda ingin RTC (jam perangkat keras) Anda menggunakan waktu setempat, jalankan perintah berikut:

timedatectl set-local-rtc 1

Jika Anda lebih suka RTC di UTC, gunakan yang ini:

timedatectl set-local-rtc 0
Jakub
sumber
sekarang waktu saya lebih cepat dari waktu saya sebelumnya dengan jumlah jam yang dimiliki zona waktu saya saat ini: jadi +7 dari waktu sekarang. Mengapa?
Johshi
Apakah Anda sudah mengatur RTC ke lokal atau UTC? Jika disetel ke lokal, maka gunakan perintah ini: timedatectl set-local-rtc 1 jika sebaliknya: timedatectl set-local-rtc 0
Jakub
Saya tidak tahu, bagaimana saya bisa memeriksanya?
Johshi
apa yang bukan masalah yang saya inginkan, masalahnya adalah "timedatectl set-timezone Zone / SubZone" tidak mengatur waktu dengan benar. akankah timedatectl set-local-rtc membantu saya dan bagaimana?
Johshi
Anda dapat memeriksa jam waktu nyata (RTC) Anda dengan timedatectl status. Saya sarankan mengaturnya ke waktu universal (UTC) karena yang lainnya (termasuk waktu lokal Anda!) Didefinisikan sebagai offset dari UTC. Perhatikan juga bahwa ini berfungsi lebih dari Arch Linux dan lebih dari sekadar XFCE.
Adam Katz
1

Saya terkejut betapa tidak sepele ini, jadi saya menulis sebuah skrip:

tz-set Asia/Bangkok

Atau, untuk memilih zona waktu dari daftar:

tz-set

Skrip berikut juga memperbarui zona waktu di:

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