CentOS 系统时间或“时间戳不对”通常并不是时间戳本身错了,而是系统时间(clock)错了,或者你查看方式、时区理解有误。下面按常见原因逐一说明。
很多人 date 看到的时间和自己本地时间差 8 小时,就以为时间戳错了。
date
如果显示:
Thu Mar 14 02:10:00 UTC 2025
但你在中国,正确应该是 CST(UTC+8)。
✅ 解决:
timedatectl set-timezone Asia/Shanghai
date
时间戳是基于系统时钟算的:
date +%s
如果系统时间错了,%s 必然错。
✅ 查看:
timedatectl
重点看:
Local timeRTC timeNTP enabledCentOS 默认不会自动校时。
✅ 开启 NTP:
yum install -y chrony
systemctl enable --now chronyd
检查:
chronyc sources
系统重启后时间又错,通常是主板电池没电或 RTC 错。
✅ 把系统时间写入硬件:
hwclock --systohc
例如:
UNIX_TIMESTAMP()new Date()time()这些通常是对的,但显示层可能有时区转换问题。
✅ 排查:
date +%s
php -r "echo time();"
如果一致,时间戳没问题。
容器默认用宿主机时间,但有时挂载错误。
✅ 解决:
docker run -v /etc/localtime:/etc/localtime:ro ...
timedatectl
date
date +%s
hwclock
如果:
NTP enabled: no → 开 NTPTime zone 不对 → 改时区RTC time 不对 → 写硬件如果你愿意,我可以更精确帮你定位:
date 不对,还是程序时间戳不对?我可以直接给你对应的一条命令解决方案。