Linux时区date相关

来自三线的随记

main commands

date

临时变更时区commands:

  • TZ=Asia/Shanghai date
  • export TZ=Asia/Shanghai && date

时区相关术语 or configure

CST

HKT

Asia/Shanghai

Asia/Chongqing

Asia/Hong_Kong

Permanent

方案1

timedatectl list-timezones |grep Shanghai

timedatectl set-timezone Asia/Shanghai

方案2

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

!不建议的方案!

直接cp改写/etc/localtime

原因: /etc/localtime在某些发行版系统是软链接,直接cp会修改link target

"如果采用直接cp的方法修改系统时区,那么就会把它所链接的文件修改掉,例如把美国的时区文件内容修改成了上海的时区内容,有可能会导致有些编程语言或程序在读取系统时区的时候发生错误(例如 java)"

ps:其实当你执行完 timedatectl set-timezone 你可以发现,其实 timedatectl set-timezone 执行的操作就是 ln -s

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

ps

[root@centos7 ~]# timedatectl status
      Local time: Mon 2019-11-18 17:35:51 CST
  Universal time: Mon 2019-11-18 09:35:51 UTC
        RTC time: Mon 2019-11-18 09:35:51
       Time zone: Asia/Shanghai (CST, +0800)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a