tzdata 更新之后,时间对不上了
某次系统更新后,日志里的时间戳整体偏了一小时,或者某个时区的偏移变了。
原因是 tzdata 包更新了时区规则。政府调整夏令时、变更时区归属,都会让同一个 Asia/Shanghai 在不同版本的 tzdata 里得到不同结果——虽然中国没有夏令时,但别的时区经常变。
排查:
dpkg -l tzdata | tail -1
zdump -v Asia/Shanghai | tail -5
timedatectl
如果容器和宿主机的 tzdata 版本不同,同一份代码在两边算出的本地时间就不一样。容器里挂载宿主机的 /usr/share/zoneinfo 能避免这类不一致。
更稳妥的做法还是那句话:内部统一 UTC,只在展示层转本地时区。