关于Linux时区的设置,系统时间修改
注意
一般情况下,Linux系统安装的时候就会选择时区,所以时区一般是没问题的,只需要修改系统时间就行,也就是第二步的date -s命令
关于UTC和CST
UTC: Coordinated Universal Time,协调世界时,就是现在的世界标准时间
CST:China Standard Time,有很多种表示,表示China Standard Time时,就是北京时间,在时区划分上,属东八区,比协调世界时早8小时,记为UTC+8
时间不正确问题排查步骤
-
先使用date命令查看自己的时区,如果是CST那是正常的时区
[root@localhost demo]# date 2021年 12月 02日 星期四 20:34:28 CST设置时区,参考链接:https://www.cnblogs.com/zhangeamon/p/5500744.html
步骤:
# 查看当前系统时间状态 timedatectl status # 将硬件时钟调整为与本地时钟一致, 0 为设置为 UTC 时间 timedatectl set-local-rtc 1 # 设置系统时区为上海 timedatectl set-timezone Asia/Shanghai # 列出所有时区 timedatectl list-timezones # 所有时区的定义文件都在/usr/share/zoneinfo下可以找到 # 不推荐的修改时区的做法 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime -
如果时区对,但是时间不对呢?需要手动设置系统时间
查看CST确切时间:https://24timezones.com/shiqu/cst_china
[root@localhost demo]# date -s 2021/12/2 [root@localhost demo]# date -s 20:33:00 # 再通过date验证 [root@localhost demo]# date 2021年 12月 02日 星期四 20:35:57 CST -
如果系统时间对了,但是通过Java代码
new Date()出来的时间又不对了呢?参考:https://www.cnblogs.com/guixiaoming/p/6632238.html
jvm是从
/etc/sysconfig/clock来获取时区相关信息的,如果clock文件存在,则覆盖内容,如果不存在,则创建clock文件,写入以下内容:ZONE="Asia/Shanghai" UTC=false ARC=false然后重启程序就好了
附:设置好时区的样子
[root@localhost ~]# timedatectl status
Local time: 四 2021-12-02 21:02:23 CST
Universal time: 四 2021-12-02 13:02:23 UTC
RTC time: 四 2021-12-02 13:02:23
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a