当前位置: 代码网 > 服务器>服务器>Linux > Linux/Windows双系统时间相差8小时问题解决方案

Linux/Windows双系统时间相差8小时问题解决方案

2026年07月28日 Linux 我要评论
问题描述在双系统(arch linux + windows)环境下,从 linux 重启进入 windows 后,windows 系统时间会比实际时间慢 8 小时。反之亦然。根本原因两个操作系统对硬件

问题描述

在双系统(arch linux + windows)环境下,从 linux 重启进入 windows 后,windows 系统时间会比实际时间慢 8 小时。反之亦然。

根本原因

两个操作系统对硬件时钟(rtc,real time clock)的时间标准处理方式不同:

操作系统默认硬件时钟标准
windows本地时间(localtime)
linuxutc(协调世界时)

当你处于东八区(utc+8)时:

  • linux 将硬件时钟存为 utc 时间,启动时加上 8 小时偏移显示为本地时间。
  • windows 直接读取硬件时钟作为本地时间,不再加偏移。

因此,如果 linux 将硬件时钟写为 utc 时间(比如 12:00),windows 启动后直接当作本地时间读取,显示为 12:00,而实际本地时间应该是 20:00,差了正好 8 小时。

解决方案

方案一:让 windows 使用 utc(推荐)

修改 windows 注册表,让 windows 也把硬件时钟视为 utc。

方法 a:命令行(推荐)

管理员身份打开 powershell 或命令提示符,执行:

reg add "hkey_local_machine\system\currentcontrolset\control\timezoneinformation" /v realtimeisuniversal /d 1 /t reg_dword /f

方法 b:注册表文件

创建一个文本文件,命名为 utc-time.reg,内容如下:

windows registry editor version 5.00

[hkey_local_machine\system\currentcontrolset\control\timezoneinformation]
"realtimeisuniversal"=dword:00000001

双击该文件导入注册表。

方法 c:手动操作注册表编辑器

  1. win + r,输入 regedit,回车。
  2. 导航到路径:hkey_local_machine\system\currentcontrolset\control\timezoneinformation
  3. 在右侧空白区域右键 → 新建 → dword (32位) 值。
  4. 命名为 realtimeisuniversal
  5. 双击该值,将数据设为 1(十六进制)。
  6. 重启 windows。

注意

  • 重启后可能需要重新同步一次时间(windows 设置 → 时间和语言 → 日期和时间 → 立即同步)。
  • 建议在 windows 中关闭自动时间同步,避免与 linux 端的 ntp 服务冲突。路径:设置 → 时间和语言 → 日期和时间 → 关闭"自动设置时间"。
  • 如果 windows 要求因 dst(夏令时)更新时钟,可以允许,它只会修正显示时间,硬件时钟仍保持 utc。

方案二:让 arch linux 使用本地时间

在 arch linux 终端中执行:

sudo timedatectl set-local-rtc 1

验证设置是否生效:

timedatectl | grep local
# 输出:rtc in local tz: yes

恢复为 utc

如果以后想恢复 linux 使用 utc:

sudo timedatectl set-local-rtc 0

注意事项

  • 此方案在切换时区或夏令时调整时可能产生问题。
  • systemd 从 v216 开始,当 rtc 设为本地时间时,不再自动将系统时间同步回硬件时钟,以避免干扰 windows。
  • fat 文件系统的时间戳将被视为 utc。

推荐做法总结

方案优点缺点
windows 使用 utc(推荐)符合国际标准,无夏令时问题,多时区友好需要修改 windows 注册表(操作简单)
linux 使用 localtime操作简单,一行命令夏令时、时区切换时可能出问题

推荐使用方案一,一劳永逸。

相关命令备忘

linux 端

# 查看当前时间和 rtc 状态
timedatectl

# 查看 rtc 是否使用本地时间
timedatectl | grep local

# 设置硬件时钟为 utc
sudo timedatectl set-local-rtc 0

# 设置硬件时钟为本地时间
sudo timedatectl set-local-rtc 1

# 查看硬件时钟
sudo hwclock --show

# 将系统时间写入硬件时钟
sudo hwclock --systohc

# 设置时区(示例:上海)
sudo timedatectl set-timezone asia/shanghai

# 启用 ntp 时间同步
sudo timedatectl set-ntp true

windows 端

# 添加 utc 注册表键(管理员权限)
reg add "hkey_local_machine\system\currentcontrolset\control\timezoneinformation" /v realtimeisuniversal /d 1 /t reg_dword /f

# 删除 utc 注册表键(恢复默认)
reg delete "hkey_local_machine\system\currentcontrolset\control\timezoneinformation" /v realtimeisuniversal /f

# 强制同步时间
w32tm /resync

以上就是linux/windows双系统时间相差8小时问题解决方案的详细内容,更多关于linux/windows时间相差8小时的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com