linux的时间和时区设置

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

/etc/localtime
/etc/timezone

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

修改本机时间vim

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

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

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

修改本机时区

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

计算出当前的时间。orm

好比jdk应用,时区为"Etc/UTC",本机时间改成北京时间,经过java代码中的new出来的时间仍是utc时间,因此必须得blog

修正本机的时区。同步

echo 'Asia/Shanghai'  > /etc/timezone

例如java 程序it

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 时区时间获取;form

在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表明系统时间,即用硬件时钟同步系统时钟

相关文章
相关标签/搜索