双系统过程中发现了一个神奇的事情,每次运行完ubuntu之后windows的时间都会被减少8个小时,修改之后只要进入一次ubuntu又会出现同样情况。
于是开始寻找是否有前辈给出解决方法
以下内容参考:
https://www.jianshu.com/p/cf445a2c55e8
理论上是有两种方法的,但是由于当前处在windows中故采用在Windows中设置的方法
打开PowerShell(在Windows+X快捷菜单中),输入以下命令:
reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 1
重启即可
顺便介绍一下原理:
摘自https://www.jianshu.com/p/cf445a2c55e8
为什么会出现时差?
在了解时差出现的原因之前,我们先了解以下几个时钟的概念:
系统时间 / 本地时间(System time / Local time)
指Linux系统内部的时间。我们在系统任务栏中能直接看到的时间就是系统时间。
实时时钟(Real-Time Clock, RTC)
实时时钟是PC主板上的晶振及相关电路组成的时钟电路的生成脉冲,它控制着计算机系统的时间。操作系统中所提到的RTC,指的就是在计算机主板控制下的时间,即系统时间,为计算机硬件的内部时钟。
协调世界时(Coordinated Universal Time, UTC)
协调世界时(英语:Coordinated Universal Time,法语:Temps Universel Coordonné,简称UTC)是最主要的世界时间标准,其以原子时秒长为基础,在时刻上尽量接近于格林尼治标准时间。
实践中,UTC与GMT大致重合,其时间的值基本一致,但是它们在本质上各不相同。前者以原子时为依据,是确定时间值的标准,而后者则是时区上的概念,作为世界上不同地区人口生活的时间参照。
UTC也是计算机系统中的一个时间衡量标准,Ubuntu默认就将机器时间视为UTC[1]。Ubuntu 16.04及更高版本的时间管理工具timedatectl中,UTC时间被单独列出来.
CST
CST同时是以下两个时区的英文缩写:
中国标准时间:China Standard Time
中部标准时间(美国):Central Standard Time
如此缩写相同,在没有明确区分的情况下极易混淆,例如,笔者在小米Max上使用date命令查看时区时,输出以下结果:
$ date
Tue Sep 4 16:51:00 CST 2018
timedatectl工具的输出也不会那么明智。如果不知道这两个时区缩写相同,我还真以为系统拿美国的CST作为时区参照,使得这里的CST指的是美国标准时间了。幸好,为了避免歧义,Ubuntu的时区设置界面中特别标明了当前时区相对UTC的时差。
格林尼治标准时间(Greenwich Mean Time, GMT)
格林尼治平时(英语:Greenwich Mean Time,GMT)是指位于英国伦敦郊区的皇家格林尼治天文台当地的平太阳时,因为本初子午线被定义为通过那里的经线。
为什么时差刚好是8个小时?
在中国,双系统导致的时差不多不少,正好是8个小时。而这8个小时的时差,正是中国所在时区东八区(GMT+8)相对于GMT的时间差。UTC正与GMT重合,加上其又是Ubuntu系统的时间依据(Ubuntu认为机器时间是UTC),因此对于时区设置为东八区的中国用户来说,这八个小时,不多不少,“刚刚好”。