在 Ubuntu(以及绝大多数 Linux 发行版)里,“时间戳不准”通常不是系统算错时间,而是时间来源或配置有问题。下面按常见原因逐条说明,并给出排查/解决办法。
Ubuntu 默认不一定自动同步网络时间,尤其是:
timedatectl
重点看这几行:
Local time: ...
Universal time: ...
RTC time: ...
Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes <-- 必须是 yes
NTP service: active <-- 必须是 active
如果是 no,说明没同步。
sudo timedatectl set-ntp true
虚拟机的“硬件时钟”是模拟的,容易漂移。
sudo apt install open-vm-tools
或确保宿主机时间正确
Ubuntu 默认认为 RTC 是 UTC 时间,Windows 认为是本地时间,双系统会冲突。
timedatectl | grep RTC
建议让 Ubuntu 使用本地时间:
sudo timedatectl set-local-rtc 1
时区错了,时间戳显示就会差几小时。
timedatectl
修改时区(例如中国):
sudo timedatectl set-timezone Asia/Shanghai
有些程序:
Date.now()(JS)docker run -v /etc/localtime:/etc/localtime:ro ...
老机器 CMOS 电池没电:
journalctl -xe | grep time
看是否有:
set-timedate -stimedatectl
date
cat /etc/timezone
如果你愿意,可以把 timedatectl 的输出贴出来,我可以直接帮你判断是哪一种原因。