如何解决Windows 10和Ubuntu的时差问题?
背景
一个阳光明媚的中午,你打开它,却发现它显示当前时间是四点:
啊,原来是这个原因
一个概念: BIOS时间:系统的硬件时间。
时间不同步,原因很简单:
我认为BIOS时间是当地时间。 这样BIOS时间就会直接显示出来。
我认为BIOS时间应该是UTC时间(格林威治标准时间)。 因此,BIOS时间会加8小时后显示(中国)。
所有操作系统(无论是否)都会在启动后更新系统时间。 流程如下:
1. 打开计算机,读取BIOS时间并显示。 (直接显示,加8再显示)
2. 连接互联网后,获取当地时间并显示。
3.更新BIOS时间。
连接互联网后,大家得到的时间都是当地时间,没有问题。 但其做法与更新BIOS时不同。 获取本地时间后,直接将BIOS时间设置为本地时间; 并将BIOS时间设置为UTC时间。 例如现在是北京时间12点,UTC时间是12-8=4点,那么BIOS时间就会设置为4点。
案件
请退出,进入,在终端中输入命令来验证上面的分析:
timedatectl status
该命令用于查看系统时间状态。 如果您的显示如下所示:
这个工具对于时间管理来说非常方便
第一行Local time=12 o'clock,是从网上获取的当地时间。
第三行,RTC time=4点钟,是电脑的BIOS时间。 可以看到,本地时间减去8小时,就得到了UTC时间,并分配给BIOS。
最后一行,RTC in local TZ=no,表示系统时间和BIOS时间不同步,即BIOS存储的是UTC时间,系统时间为本地时间。
那么问题来了。 下次重新启动时,BIOS 时间读取为 4 点钟,但 BIOS 时间被认为是本地时间,因此会直接显示 4 点钟。 不过,他也可以连接到互联网。 当他得到正确的12点钟后,他会将BIOS设置为12点钟。 然后下次登录的时候,他就会把8点加到12点,得到20点,然后输出——如此循环,每次更换系统,显示的时间都不正确。
解决方案
解决方案非常简单。 直接在终端输入:
timedatectl set-local-rtc 1
这句话的作用是同步系统时间和BIOS时间。 现在,大家都认为BIOS时间就是当地时间。 在线更新时,BIOS时间也直接设置为当地时间。 这样就没有问题了。
现在再次输入查看系统时间状态:
这是给你的开发人员的,不是我的。
第一行,当地时间=12点。
第三行,RTC时间=12点,即BIOS也设置为12点。
最后一行,本地 TZ 中的 RTC 更改为 yes。 系统时间和BIOS时间同步。
会弹出一个窗口告诉你这个方法不太好,但是为了同步两个系统的时间,我们只能这样做。
现在重启并输入,你会看到时间正确了:
是的是的
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权本站发表,未经许可,不得转载。