您的位置:首页 > 其它

Win/Ubuntu:双系统时间错误

2017-03-26 20:37 218 查看
如果只关注操作,直接查看实践部分就ok。


一、问题

问题描述:


采用EasyBCD设置引导通过硬盘安装完成了Win7/Ubuntu双系统之后。发现一个问题:从Win7切换到Ubuntu或者从Ubuntu切换到Win7之后都会出现时间错误的情况。我是在第二次注意到这个问题的时候打算解决掉它的。

详细描述


我关注到我的Win7时间不对的时候看到了网友的描述:今天开机时候没插网线,直接进了 ubuntu,发现时间快了8小时,插上网线就正常了,所以觉得不太正常,所以重启进了win7,发现慢了8小时,这才意识到可能是两个系统设置不同,导致的这个时间问题看完之后我在自己的电脑做了测试和这个状况完全符合我当前的状况。

二、理论(原因)

Why:

Ubuntu和Windows默认的时间管理方式不同

Where:

实力推荐:漫谈时间和时区——大神

总结

Win/Linux(Ubuntu)使用的都是 协调世界时(UTC)。那为什么会出现错误呢?

首先电脑主板有一个系统硬件时间模块,用来当系统关闭以及电脑断电之后维持系统时间在一个系统给定值的基础上正确累计确保下次开机的时间不会出现过度偏差的电路。

其次Win/Ubuntu每次退出系统的时候都把时间交个这个电路处理

真正的症结就在于系统交付给电路的时间是什么,以及系统拿到电路提供的时间之后有做了什么上。

Win/Ubuntu使用的都是UTC标准的

关键点就在于Win默认使用的是本地时间;Linux(Ubuntu)使用的是“协调世界时Universal Time Coordinated(UTC)”

(UTC)被应用于许多互联网和万维网的标准中,并沿用至今,例如,网络时间协议(NTP, Network Time Protocol)就是协调世界时在互联网中使用的一种方式。

本地时间:UTC+本地时区(北京:UTC+8)

标准时间:UTC+格林威治所在时区(TUC+0)

别问标准是怎么来的,世界上关于时间总得有一个规则,这个规则是什么不重要重要的是要有,这就是历史选中的规则,我们了解并运用就好。

也就是说Win在硬件电路存储的时间就是 本地时间,Ubuntu在硬件电路存储的时间是 标准时间

Win 开机取出硬件时间来直接就是用

Ubuntu 系统启动取出硬件时间来和所设置的时区做相应的运算后使用。

三、实际操作

看别的博客知道这里的操作方法有很多,我先给自己定一个基调。

我认为面向接口编程讲究的一个关键点是:接口的实现方与需求方在数据交换的时候一定要保证数据的简洁性才是好的实现方式。也就是说接口间交换数据的时候尽可能使用基本数据类型,尽可能使用公共类库中存在的数据结构。

所以说在以上为理论基础的情况下我认为Win的做法不是太好,在数据的交流方面没有用更简洁的数据类型,世界标准时间(UTC),而是使用了本地时间(UTC+时区)

好我们把Win的时间操作类型改为和Ubuntu一样的方式。


我在操作前的状况

Win7 X64 旗舰版

Ubuntu16.04

处于Win 当前时间和(UTC+0)一致,比北京时间慢8个小时

操作步骤

打开注册表管理器:命令行 输入:regedit 回车。

导航到
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation
位置。

右侧空白处:右击 → 新建 → QWORD(64位)值

将文件命名为 “
RealTimeIsUniversal
”世界通用时间

双击
RealTimeIsUniversal
这一条目,确保
基数
十六进制(H)
将数值数据修改为
1


确定,重启计算机。

如果重启后发现时间比当前正确的时间快了你所在时区的时间(北京会快8小时)修改BIOS时间再启动,就OK。

参考:

Win/Lin 双系统时间错误的调整

解决Windows与Ubuntu双系统时间同步问题

Linux和win7双系统时间错误问题

国际日期变更线

这里有一个系统硬件时间 的概念。

关于世界时间的探究
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ubuntu win7 时间同步