Linux 和 Windows 时间不同步
一、时间与时区管理方式
Windows:
- 直接将CMOS时间认定为当前显示时间,不根据时区进行转换。 
- 调整时区时,系统会根据新时区计算当前时间,并同时修改CMOS时间。 
Linux:
- 将CMOS时间作为格林威治标准时间(GMT)。 
- 根据系统设置的时区来确定最终显示的当前系统时间。 
二、问题解决方案
为了解决Windows和Linux在时间管理上的差异,可以采取以下两种方案之一:
- 让Windows使用Linux的时间管理方式(启用UTC):
在Windows中,通过修改注册表来启用UTC。
具体步骤:打开运行窗口(快捷键Win+R),然后输入regedit启动注册表编辑器,并找到HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/TimeZoneInformation/位置(可以直接粘贴进注册表编辑器地址栏),然后添加一项类型为REG_DWORD的键值,命名为RealTimeIsUniversal,值为 1 。
重启后,Windows将使用UTC方式管理时间。
- 让Linux按照Windows的方式管理时间(禁用UTC):
注意:linux改成
localtime可能会受夏令时影响(仅限部分地区)
- 在Linux中,通过timedatectl命令将硬件时钟设置为本地时区。 
- 使用 - timedatectl set-local-rtc 1命令将硬件时钟设置为本地时区。
- 相应地,如果需要设置为UTC,则使用 - timedatectl set-local-rtc 0命令。
通过以上方法,可以在Windows和Linux之间实现时间管理的一致性,避免时区调整带来的时间错误问题。
三、Linux时钟设置详细教程
- 查看时间和时区:
- 使用 - timedatectl status查看系统当前时间和日期。
- 使用 - timedatectl | grep Time查看当前时区。
- 使用 - timedatectl list-timezones查看所有可用时区。
- 设置硬件时钟:
- 使用 - timedatectl | grep local查看硬件时钟是否设置为本地时区。
- 使用 - timedatectl set-local-rtc 1将硬件时钟设置为本地时区。
- 使用 - timedatectl set-local-rtc 0将硬件时钟设置为UTC。
- 设置时区:
- 使用 - timedatectl set-timezone "Asia/Shanghai"设置本地时区。
- 使用 - timedatectl set-timezone UTC将local_time设置为UTC。
- 设置时间和日期:
- 使用 - timedatectl set-time 13:58:30设置时间。
- 使用 - timedatectl set-time 20250124设置日期。
- 使用 - timedatectl set-time '13:58:40 2025-01-24'同时设置日期和时间。
- 同步系统及硬件时间:
- 使用 - date查看系统时间。
- 使用 - hwclock --show查看硬件时间。
- 使用 - hwclock --systohc以系统时钟为准,同步硬件时钟。
- 使用 - hwclock --hctosys以硬件时钟为准,同步系统时钟。



