最稳妥方式是用 timedatectl 设置时区并启用 NTP 同步;需确认 Time zone 为 Asia/Shanghai (+0800)、RTC in local TZ 为 no、System clock synchronized 为 yes;执行 sudo timedatectl set-timezone Asia/Shanghai 和 sudo timedatectl set-ntp true;双系统务必保持硬件时钟为 UTC 模式。

直接用 timedatectl 设置时区并启用 NTP 同步,是最稳妥、兼容性最好的方式。手动改文件或只调 date 命令容易遗漏硬件时钟同步或服务配置,导致重启后失效或双系统时间错乱。
确认当前状态再动手
先运行 timedatectl,重点看三行:
-
Time zone:应显示
Asia/Shanghai (CST, +0800),不是 UTC 或空值 -
RTC in local TZ:应为
no(硬件时钟走 UTC),双系统用户尤其要注意 -
System clock synchronized:应为
yes,表示 NTP 已生效
设置正确时区(推荐 timedatectl)
执行以下命令设为东八区:
分析 Java Spring Boot 后端 Controller 代码,自动生成 Markdown 格式的接口文档。当用户说“生成 Java 接口文档”、“生成 API 文档”、“从 Spring 代码生成文档”时触发。
sudo timedatectl set-timezone Asia/Shanghai- 验证:
timedatectl | grep "Time zone"输出必须含+0800 - 避免用
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime,部分云主机或容器中该文件会被覆盖 - 别用
tzselect或临时 export TZ,这些只影响当前 shell,cron、rsyslog 等服务不认
启用并强制一次网络时间同步
现代发行版默认用 chronyd,不是 ntpd:
- 开启自动同步:
sudo timedatectl set-ntp true - 检查服务状态:
systemctl status chronyd - 立即校准(尤其时间偏差大时):
sudo chronyc makestep - 若未配置 makestep,编辑
/etc/chrony.conf加入makestep 1 -1,再重启服务
同步硬件时钟并确认模式
系统时间准了,还得让 BIOS/UEFI 时钟也对上:
- 确保硬件时钟使用 UTC 模式(Linux 默认,也最安全):
sudo timedatectl set-local-rtc false - 把当前准确的系统时间写入硬件:
sudo hwclock --systohc - 验证:
date和hwclock --show输出时间应一致,且末尾都带+0800 - 双系统(如 Win+Linux)切勿设
set-local-rtc true,否则 Windows 时间会快 8 小时










