在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"
可是這樣修改後,重啓系統後,時間又變成修改前的時間。這是由於咱們只修改了系統時間
而沒有修改硬件時間。咱們通常看到的時間爲系統時間,而硬件時間指的是主板上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表明系統時間,即用硬件時鐘同步系統時鐘