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表明系統時間,即用硬件時鐘同步系統時鐘

相關文章
相關標籤/搜索