linux时区(/etc/localtime和/etc/timezone)

/etc/localtime

/etc/localtime是用来描述 系统时间,如果系统时间不正确,通过修改该文件来修改时区

/etc/localtime文件通常是一个到/usr/share/zoneinfo/某时区文件的软链接,执行下面命令查看链接到哪个时区文件:

ll /etc/localtime

执行结果如下:

lrwxrwxrwx 1 root root 27 Dec 28 15:20 /etc/localtime -> /usr/share/zoneinfo/Etc/UTC

说明连接到 UTC 时区,比北京时间晚8个小时

/usr/share/zoneinfo/目录下是各种时区文件

查看时区

date -R

执行结果:

Thu, 02 Jul 2020 12:33:18 +0000

没有加上8小时,不是东8区

修改时区

通过软连接修改时区

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

再次执行date -R时间一般是正确的

/etc/timezone

/etc/timezone是用来描述本机所属 时区 的

有些程序是通过该时区,自行换算时间的,如:JAVA,也就是说/etc/timezone时区不正确,像java这样的程序,获取的时间可能不正确

java可以设置上海时区,如下:

TimeZone tz = TimeZone.getTimeZone("Asia/Shanghai");
TimeZone.setDefault(tz);

查看/etc/timezone文件

cat /etc/timezone

可查看当前时区

修改时区

echo 'Asia/Shanghai' >/etc/timezone

原文出处:/show_1EF5oe42EiBO.html