有没有办法检查我当前在 Linux 上处于哪个时区?
答案1
通常,TZ
环境变量会告诉你一些有用的信息。但是,最好使用诸如mktime()
和之类的函数在和本地时区表示localtime()
之间进行转换time_t
。也就是说,不要尝试自己进行转换。
答案2
如果你指的是从控制台,只需输入:
date +%Z
答案3
如果您想要数字时区:
date +'%:z %Z'
示例输出:
-05:00 EST
答案4
有时你可能正在寻找规范的时区,而不是由例如生成的简短格式date %Z
。在Fedora 等US/Eastern
系统上,输出许多有用的信息,包括当前区域:timedatectl
timedatectl
# timedatectl
Local time: Tue 2016-09-13 17:10:26 EDT
Universal time: Tue 2016-09-13 21:10:26 UTC
RTC time: Tue 2016-09-13 21:10:26
Time zone: US/Eastern (EDT, -0400)
Network time on: yes
NTP synchronized: yes
RTC in local TZ: no
不幸的是,timedatectl
接受set-timezone
为命令,但没有对应的get-timezone
。解析如下:
# timedatectl status | grep "zone" | sed -e 's/^[ ]*Time zone: \(.*\) (.*)$/\1/g'`
US/Eastern
对于 systemd >= 241,请参阅@BurninateSE 的回答(TLDR:)timedatectl show --va -p Timezone
。