Ubuntu(或任何 Linux 系统)的“时间戳不准”通常不是系统本身算错时间,而是时间来源或配置有问题。常见原因和对应解决办法如下:
Ubuntu 默认用 systemd-timesyncd 或 chrony 来自动校时,但如果被关掉或没装,时间就会慢慢漂移。
检查:
timedatectl status
看:
System clock synchronized: yesNTP service: active如果不是:
sudo timedatectl set-ntp true
时间戳本身是 UTC,但显示时间受时区影响。
检查:
date
timedatectl
修改时区(如中国):
sudo timedatectl set-timezone Asia/Shanghai
--rm解决:
open-vm-tools)系统启动时会从主板 CMOS 读时间。
查看:
timedatectl | grep "RTC"
如果 RTC 是本地时间而系统认为是 UTC(或反过来):
sudo timedatectl set-local-rtc 0 # RTC 用 UTC(推荐)
Windows 默认把硬件时钟当本地时间,Linux 当 UTC,切换系统就会“差 8 小时”。
解决(Ubuntu 端):
timedatectl set-local-rtc 1 --adjust-system-clock
或在 Windows 改注册表用 UTC。
如果你说的是代码里的时间戳:
time() 返回的是 秒级 UTC例如:
time(NULL); // 永远是 UTC 秒数,不受时区影响
有人执行过:
sudo date -s "2020-01-01"
会导致时间突然跳变。
timedatectl status
date
date +%s
date +%s 是全球统一时间戳如果你能说清楚:
我可以直接告诉你具体改哪一行配置。