linux的时间和时区设置

在linux中与时间相关的文件有

/etc/localtime
/etc/timezone

其中,/etc/localtime 是用来描述本机时间,而/etc/timezone 是用来描述机器所属的时区。

修改本机时间

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

在/usr/share/zoneinfo 下存放着不同时区格式的时间文件,执行一下命令,可以讲本机时间调整至目标时区的时间格式。

但是!调整了时间格式,本机所属的时区是保持不变的!

修改本机时区

在linux中,有一些程序会自己计算时间,不会直接采用带有时区的本机时间格式,会根据UTC时间和本机所属的时区等

计算出当前的时间。

比如jdk应用,时区为"Etc/UTC",本机时间改为北京时间,通过java代码中的new出来的时间还是utc时间,所以必须得

修正本机的时区。

echo 'Asia/Shanghai'  > /etc/timezone

例如java 程序

vim  Demo.java 

import java.util.Date;
import java.text.SimpleDateFormat;

public class Demo{ 
public static void main(String args[]){ 
System.out.println("This is a test"); 
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(df.format(new Date()));
} 
}

javac Demo.java

java Demo 显示时间是从/etc/timezone 时区时间获取;

在data -R 查看是+0800,但是查看的时间就是少12个小时,需要修改 /etc/timezone
################

强行修改系统时间:

格式为 date -s "YYYY-MM-DD hh:mm:ss"
linux的时间和时区设置

但是这样修改后,重启系统后,时间又变成修改前的时间。这是因为我们只修改了系统时间

而没有修改硬件时间。我们一般看到的时间为系统时间,而硬件时间指的是主板上CMOS的

时间,这两个时间并不总是同步的,一般间隔大约11分钟会同步一次。

当系统启动会从CMOS上读取一次时间为系统时间,而后系统时间独立。

通过hwclock --systohc 讲系统时间同步到硬件时间

所有可以通过 date -s "YYYY-MM-DD hh:mm:ss" && hwclock --systohc 来修改系统时间。

date -s "20210419 10:11:12"  && hwclock --systohc

注意:对于虚机机可能重启后,系统时间仍然是主机硬件时间。
注 hwclock --hctosys hc代表硬件时间,sys代表系统时间,即用硬件时钟同步系统时钟

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章