作者:滑稽
链接:https://www.zhihu.com/question/46525639/answer/157272414
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
Windows 与 Mac/Linux 看待系统硬件时间的方式是不一样的:Windows 把计算机硬件时间当作本地时间 (local time),所以在 Windows 系统中显示的时间跟 BIOS 中显示的时间是一样的。
Linux/Unix/Mac 把计算机硬件时间当作 UTC, 所以在 Linux/Unix/Mac 系统启动后在该时间的基础上,加上电脑设置的时区数( 比如我们在中国,它就加上 “8” ),因此,Linux/Unix/Mac 系统中显示的时间总是比 Windows 系统中显示的时间快 8 个小时。
所以,当你在 Linux/Unix/Mac 系统中,把系统现实的时间设置正确后,其实计算机硬件时间是在这个时间上减去 8 小时,所以当你切换成 Windows 系统后,会发现时间慢了 8 小时。就是这样个原因。
两种解决方法:
- 在 Ubuntu 中把计算机硬件时间改成系统显示的时间,即禁用 Ubuntu 的 UTC。
这又有另一个需要注意的地方:
在 Ubuntu 16.04 版本以前,关闭 UTC 的方法是编辑 /etc/default/rcS,将 UTC=yes 改成 UTC=no, 但在 Ubuntu 16.04 使用 systemd 启动之后,时间改成了由 timedatectl 来管理,所以更改方法是
timedatectl set-local-rtc 1 --adjust-system-clock
执行后重启 Ubuntu,应该就没有问题了。
- 修改 Windows 对硬件时间的对待方式,让 Windows 把硬件时间当作 UTC.
打开命令行程序,在命令行中输入下面命令并回车
Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 1
应该就没有问题了。
网友评论