Plainnotes

tzdata 更新之后,时间对不上了

2025-02-26 · 2 分钟系统

某次系统更新后,日志里的时间戳整体偏了一小时,或者某个时区的偏移变了。

原因是 tzdata 包更新了时区规则。政府调整夏令时、变更时区归属,都会让同一个 Asia/Shanghai 在不同版本的 tzdata 里得到不同结果——虽然中国没有夏令时,但别的时区经常变。

排查:

dpkg -l tzdata | tail -1
zdump -v Asia/Shanghai | tail -5
timedatectl

如果容器和宿主机的 tzdata 版本不同,同一份代码在两边算出的本地时间就不一样。容器里挂载宿主机的 /usr/share/zoneinfo 能避免这类不一致。

更稳妥的做法还是那句话:内部统一 UTC,只在展示层转本地时区。