时间相关的指南
本地时间和UTC时间
TL;DR:
- Windows 认为 硬件时间为当地时间(OS和UEFI里看到的是一样的)
- Linux 认为 硬件时间是 UTC时间,系统根据时区format显示当地的时间(UEFI为UTC,OS根据选择的时区自适应)
啰嗦:
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小时。就是这样个原因。
OK!既然知道原因了,就好解决了。
解决办法(推荐)
在UEFI中看到本地时间是符合人类直觉的,所以Windows方案胜出,那么就是修改Linux禁用UTC即可。
# timedatectl
timedatectl set-local-rtc 1 --adjust-system-clock
或者 直接编辑 adjtime
vim /etc/adjtime
# UTC 修改为 LOCAL
# 写入当前时间到硬件
hwclock -w
# Ubuntu 16.04 版本以前:
# 将UTC=yes改成UTC=no
vim /etc/default/rcS
被解决办法
UTC一统天下,让Windows来适应。
reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 1
时区
UTC即Universal Time Coordinated,协调世界时(世界统一时间)
GMT 即Greenwich Mean Time,格林尼治平时
设置时区
# 查看当前
date -R
# 查看当前可用时区 过滤上海
timedatectl list-timezones | grep Shanghai
# 设置到上海时区
sudo timedatectl set-timezone Asia/Shanghai
时间同步
同步时间工具
1. 查看当前时间和时区及其他状态
timedatectl
2. 设置 NTP 同步
需要预装
ntp
timedatectl set-ntp true
x. 同步BIOS到OS时间
hwclock -s
x. 同步OS到BIOS时间
hwclock -w