一、时间与时区管理方式

Windows:

  • 直接将CMOS时间认定为当前显示时间,不根据时区进行转换。

  • 调整时区时,系统会根据新时区计算当前时间,并同时修改CMOS时间。

Linux:

  • 将CMOS时间作为格林威治标准时间(GMT)。

  • 根据系统设置的时区来确定最终显示的当前系统时间。

二、问题解决方案

为了解决Windows和Linux在时间管理上的差异,可以采取以下两种方案之一:

  1. 让Windows使用Linux的时间管理方式(启用UTC):

在Windows中,通过修改注册表来启用UTC。

具体步骤:打开运行窗口(快捷键Win+R),然后输入regedit启动注册表编辑器,并找到HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/TimeZoneInformation/位置(可以直接粘贴进注册表编辑器地址栏),然后添加一项类型为REG_DWORD的键值,命名为RealTimeIsUniversal,值为 1

重启后,Windows将使用UTC方式管理时间。

  1. 让Linux按照Windows的方式管理时间(禁用UTC):

注意:linux改成localtime可能会受夏令时影响(仅限部分地区)

  • 在Linux中,通过timedatectl命令将硬件时钟设置为本地时区。

  • 使用timedatectl set-local-rtc 1命令将硬件时钟设置为本地时区。

  • 相应地,如果需要设置为UTC,则使用timedatectl set-local-rtc 0命令。

通过以上方法,可以在Windows和Linux之间实现时间管理的一致性,避免时区调整带来的时间错误问题。

三、Linux时钟设置详细教程

  1. 查看时间和时区:
  • 使用timedatectl status查看系统当前时间和日期。

  • 使用timedatectl | grep Time查看当前时区。

  • 使用timedatectl list-timezones查看所有可用时区。

  1. 设置硬件时钟:
  • 使用timedatectl | grep local查看硬件时钟是否设置为本地时区。

  • 使用timedatectl set-local-rtc 1将硬件时钟设置为本地时区。

  • 使用timedatectl set-local-rtc 0将硬件时钟设置为UTC。

  1. 设置时区:
  • 使用timedatectl set-timezone "Asia/Shanghai"设置本地时区。

  • 使用timedatectl set-timezone UTC将local_time设置为UTC。

  1. 设置时间和日期:
  • 使用timedatectl set-time 13:58:30设置时间。

  • 使用timedatectl set-time 20250124设置日期。

  • 使用timedatectl set-time '13:58:40 2025-01-24'同时设置日期和时间。

  1. 同步系统及硬件时间:
  • 使用date查看系统时间。

  • 使用hwclock --show查看硬件时间。

  • 使用hwclock --systohc以系统时钟为准,同步硬件时钟。

  • 使用hwclock --hctosys以硬件时钟为准,同步系统时钟。