AI不是轻松回答这个问题吗
你看到的:
tzinfo=<DstTzInfo 'Asia/Shanghai' LMT+8:06:00 STD>
里面的 LMT+8:06:00 是 Local Mean Time(本地平太阳时),而不是现在常用的标准时间。
背景
LMT(Local Mean Time)
在现代标准时区出现之前,每个城市都是根据本地经度的太阳中天时间来计算时间的。
“上海”的经度大约是 121°29′ E。
平太阳时计算公式:每 1° 经度差约等于 4 分钟时间差。
121.48
°
×
4
min/°
≈
485.9
分钟
≈
8
小时
6
分钟
121.48°×4min/°≈485.9分钟≈8小时6分钟
所以历史上的上海时间就是 UTC+08:06:00,完美对应你看到的 +8:06。
时区数据库(tzdata)
Python、Linux、Windows 都会使用 IANA tz 数据库(也叫 tzdata)。
tzdata 不仅记录现代标准时间,也记录历史时区变迁,包括夏令时、LMT 等。
当你查询 Asia/Shanghai 时,如果没有明确时间点,它默认可能返回 最早的历史记录,也就是 LMT。
UTC = LMT - 偏移量
--
FROM 61.51.229.*