在Linux中获取当前系统时区
1. 概述
在本教程中,我们将研究在 Linux 中获取系统时区的不同方法。
2.时区表示
有几种表示时区的方式。一方面,它们可以简单地表示为其名称的缩写。例如,东部标准时间(北美)通常缩写为 EST。除此之外,它们还可以表示为与 UTC 的偏移量。例如,EST 时区是 UTC-4。最后,每个时区也可以用它在 IANA 时区数据库中的指定名称来表示,例如America/New_York。
3. TZ环境变量
在 Linux 中,TZ环境变量指定系统的时区。如果设置,则优先作为系统的时区。要检查它的值,只需使用echo 命令将内容打印到控制台:
$ echo $TZ
Europe/Madrid
4. date命令
date 命令是一个命令行工具,用于处理系统的日期和时间。使用 date命令,我们可以获得时区缩写名称或其等效的 UTC 偏移量。date命令接受一个格式参数, 它允许我们以偏移量或缩写名称输出时区信息。
例如,要获取时区的缩写名称,我们可以使用*%Z格式的date*命令:
$ date +%Z
CEST
除此之外,我们还可以使用 %z格式以 UTC 偏移表示打印时区:
$ date +%z
+0200
偏移量告诉我们当前系统时区比 UTC 早 2 小时。
5. timedatectl
对于systemd 附带的所有 Linux 发行版,timedatectl 命令为我们提供了系统的详细时间信息。此信息包括 UTC 时间、本地时间以及系统的时区。
$ timedatectl
Local time: Tue 2022-05-03 08:01:41 CEST
Universal time: Tue 2022-05-03 06:01:41 UTC
RTC time: Tue 2022-05-03 06:01:41
Time zone: Europe/Madrid (CEST, +0200)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
从输出中,我们可以看到时区的不同表示与当前日期和时间一起打印。
此外,我们可以传入show参数以机器可读的格式打印信息:
$ timedatectl show
Timezone=Europe/Madrid
LocalRTC=no
CanNTP=yes
NTP=yes
NTPSynchronized=yes
TimeUSec=Fri 2022-05-03 06:01:47 CEST
RTCTimeUSec=Fri 2022-05-03 06:01:46 CEST
6. /etc/localtime文件
**我们还可以从/etc/localtime 文件中获取时区信息。**事实上, timedatectl命令实际上是从这个文件中读取的。
/etc/localtime文件是实际时区二进制文件的符号链接。 要获取该值,我们可以通过运行ls -l检查它所指向的实际时区文件:
$ ls -l /etc/localtime
lrwxrwxrwx 1 user user 33 Dec 29 09:44 /etc/localtime -> /usr/share/zoneinfo/Europe/Madrid
从符号链接中,我们可以直接识别出系统的时区设置为欧洲/马德里。
或者,我们可以使用 zdump 命令立即读取二进制文件的内容:
$ zdump /etc/localtime
/etc/localtime Tue May 3 08:16:16 2022 CEST
除了时区, zdump命令还打印系统在给定时区的当前日期和时间。
7. /etc/timezone文件
最后,*还有一个/etc/timezone*文件,它以纯文本格式存储系统的时区。**我们可以使用cat 命令简单地读取时区:
$ cat /etc/timezone
Europe/Madrid