操作系统显示的时间是根据BIOS里时间显示的。
但是不同的操作系统对BIOS里时间理解不同。
Windows当作本地时间(local time),所以在Windows系统中显示的时间跟BIOS中显示的时间是一样的。
Linux类的当做UTC(Universal Time Coordinated),然后加上时区,例如BIOS里是1点,我们时区是+8(东8区),显示出来是9点。
既然这样,我们BIOS里设置的时间对应本地时间,应该是Linux类操作系统时间显示不对,为什么一般我们看到的是windows显示不对呢?
因为操作系统会根据时间服务器调整时间,Windows是过一段时间调整一次,Linux类操作系统每次开机就会调整。只要联网,Linux的时间一般都是对的。调整后时间会写入BIOS,比如当前9点,我们时+8时区,UTC是1点,Linux写入BIOS的时间是1点,所以再启动Windows,Windows时间就是1点。在Windows里也可以手动同步时间服务器,手动设置时间,但一旦进入Linux又被改了。
我们装双系统时,可以禁用Ubuntu的UTC,也可以修改Windows使用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
Windows使用UTC要改注册表,我一般不用,有需要的可以搜索一下。