在 CentOS 上时间戳显示异常,通常不是系统“算错时间”,而是时区、时钟源、NTP 同步或时间戳单位理解不一致导致的。下面按常见原因 → 排查 → 解决详细说明。
现象
date 显示时间与本地时间差 8 小时(或 5、13 小时)date +%s 本身是对的,但显示时间不对原因
排查
timedatectl
典型错误示例
Time zone: UTC
解决(中国时区)
timedatectl set-timezone Asia/Shanghai
验证:
date
现象
date 和 hwclock 不一致排查
date
hwclock
解决
hwclock --systohc # 系统时间写入硬件
或反过来:
hwclock --hctosys
现象
排查
timedatectl status
查看:
NTP enabled: no
解决(CentOS 7/8)
yum install -y chrony
systemctl enable chronyd
systemctl start chronyd
验证:
chronyc sources
现象
说明
| 类型 | 单位 |
|---|---|
| Unix 时间戳 | 秒 |
| Java / JS | 毫秒 |
| 数据库 | 有时是微秒 |
示例
# 秒
date +%s
# 毫秒
date +%s%3N
错误示例
date -d @1700000000000 # 错(以为秒)
✅ 正确:
date -d @1700000000
常见场景
验证
dmesg | grep -i clock
解决
现象
原因
/etc/localtime解决
docker run -v /etc/localtime:/etc/localtime:ro ...
或:
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
date
timedatectl
hwclock
date +%s
timedatectl set-timezone Asia/Shanghai
yum install -y chrony
systemctl enable chronyd
systemctl start chronyd
你可以直接贴出以下信息:
date
timedatectl
date +%s
以及:
我可以直接告诉你你的问题属于哪一种。