大家在切换操作系统的时候会发现一个问题, Windows 和 Ubuntu的时间会出现不一致的情况。在 Windows 中把时间设置正确了过后,回到在 Ubuntu 后系统的时间又不一样了,在 Ubuntu中把时间设置正确后进入 Windows 后,时间又不一致了。
出现这种情况的原因是 Windows 和 Ubuntu它们在默认情况下看待硬件时间(主板上的BOIS显示的时间)的方式不一样。 知道了问题存在的原因,我们就来解决这个问题。
这个是一个关于时间的问题,我们就先来了解一下关于时间的概念
UTC即Universal Time Coordinated,协调世界时
GMT即Greenwich Mean Time,格林尼治平时
Windows 与 Linux 缺省看待系统硬件时间的方式是不一样的:
* Windows把系统硬件时间当作本地时间(local time),即操作系统中显示的时间跟BIOS中显示的时间是一样的。
* Linux/Unix/Mac把硬件时间当作 UTC,操作系统中显示的时间是硬件时间经过换算得来的,比如说北京时间是GMT+8,则系统中显示时间是硬件时间+8.
这 样,当PC中同时有多系统共存时,就出现了问题。假如你的 Ubuntu 和 Windows 中设置的时区都为北京时间东八区,而你在 Ubuntu中把当前系统时间更改为9:00AM.则此时硬件中存储的实际C时间是1:00AM.这时你重启进入Windows后,你会发现 windows系统中显示的时间是 1:00AM,比 Ubuntu 中慢了八个小时。同理,你在 Windows中更改或用网络同步了系统时间后,再到Ubuntu中去看,系统就会快了8小时。在实行夏令时的地区,情况可能会更复杂些。
在ubunut下联网后时间还未能自动调整过来, 可用一下方法修改:
让 Windows 把硬件时间当作 UTC
开始->运行->CMD,打开命令行程序(Vista则要以管理员方式打开命令行程序方可有权限访问注册表),在命令行中输入下面命令并回车
Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 1
====================================================================
Ubuntu中不使用UTC时间,而启用本地时间,旧版ubuntu
编辑
/etc/default/rcS
把其中的内容”UTC=yes”改成”UTC=no”,保存后重启系统就可以了
新版:
timedatectl set-local-rtc 1 --adjust-system-clock
(#解释:RTC为硬件时间,即BIOS的时间,而adjust为写入到RTC中的选项)
linux 的系统时间有时跟硬件时间是不同步的
Linux时钟分为系统时钟(System Clock)和硬件(Real Time Clock,简称RTC)时钟。系统时钟是指当前Linux Kernel中的时钟,而硬件时钟则是主板上由电池供电的时钟,这个硬件时钟可以在BIOS中进行设置。当Linux启动时,硬件时钟会去读取系统时钟的设置,然后系统时钟就会独立于硬件运作。
Linux中的所有命令(包括函数)都是采用的系统时钟设置。在Linux中,用于时钟查看和设置的命令主要有date、hwclock和clock。其中,clock和hwclock用法相近,只用一个就行,只不过clock命令除了支持x86硬件体系外,还支持Alpha硬件体系。
1、date
查看系统时间
# date
设置系统时间
# date --set “07/07/06 10:19" (月/日/年时:分:秒)
2、hwclock/clock
查看硬件时间
# hwclock --show
或者# clock --show
设置硬件时间
# hwclock --set --date="07/07/06 10:19" (月/日/年 时:分:秒)
或者# clock --set --date="07/07/06 10:19" (月/日/年 时:分:秒)
3、硬件时间和系统时间的同步
按照前面的说法,重新启动系统,硬件时间会读取系统时间,实现同步,但是在不重新启动的时候,需要用hwclock或clock命令实现同步。
硬件时钟与系统时钟同步:# hwclock --hctosys(hc代表硬件时间,sys代表系统时间)或者# clock --hctosys
系统时钟和硬件时钟同步:# hwclock --systohc或者# clock --systohc