关于Linux时区的设置,系统时间修改
注意
一般情况下,Linux系统安装的时候就会选择时区,所以时区一般是没问题的,只需要修改系统时间就行,也就是第二步的date -s
命令
关于UTC和CST
UTC: Coordinated Universal Time,协调世界时,就是现在的世界标准时间
CST:China Standard Time,有很多种表示,表示China Standard Time时,就是北京时间,在时区划分上,属东八区,比协调世界时早8小时,记为UTC+8
时间不正确问题排查步骤
先使用date命令查看自己的时区,如果是CST那是正常的时区
1
2[root@localhost demo]# date
2021年 12月 02日 星期四 20:34:28 CST设置时区,参考链接:https://www.cnblogs.com/zhangeamon/p/5500744.html
步骤:
1
2
3
4
5
6
7
8
9
10
11查看当前系统时间状态
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
1
2
3
4
5[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文件,写入以下内容:1
2
3ZONE="Asia/Shanghai"
UTC=false
ARC=false然后重启程序就好了
附:设置好时区的样子
1 | [root@localhost ~]# timedatectl status |