- 主题:为什么这种奇葩的时区数据?
今天看到系统给我返回这个时区数据:
tzinfo=<DstTzInfo 'Asia/Shanghai' LMT+8:06:00 STD>
为什么会 +8:06 啊。
--
修改:hgoldfish FROM 112.48.72.*
FROM 112.48.72.*
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.*
这种纪录的存在不是坑人么!!
有人给我报了 BUG 说昨天零点的数据怎么都显示成前天的了。
这个代码还是 AI 写给我的。
【 在 z16166 的大作中提到: 】
: AI不是轻松回答这个问题吗
: 你看到的:
: tzinfo=<DstTzInfo 'Asia/Shanghai' LMT+8:06:00 STD>
: ...................
--
修改:hgoldfish FROM 112.48.72.*
FROM 112.48.72.*
时间这块确实乱,哎
【 在 hgoldfish 的大作中提到: 】
: 这种纪录的存在不是坑人么!!
: 有人给我报了 BUG 说昨天零点的数据怎么都显示成前天的了。
: 这个代码还是 AI 写给我的。
: ...................
--
FROM 60.1.0.*
re
【 在 hgoldfish 的大作中提到: 】
: 今天看到系统给我返回这个时区数据:
: tzinfo=<DstTzInfo 'Asia/Shanghai' LMT+8:06:00 STD>
: 为什么会 +8:06 啊。
: ...................
--
FROM 120.245.118.*
ds说历史时间才会使用这种数据,是不是遇到什么bug了?
---
历史背景
1901年以前:中国各地使用自己的地方时(LMT)
1901年:上海公共租界采用了GMT+8:05:43作为标准时间
1928年:改为GMT+8:00(东八区标准时间)
1949年后:全国统一使用北京时间(东八区)
为什么Python会显示这个?
Python的时区数据库(通常来自pytz或zoneinfo)包含了历史时区数据。当查询Asia/Shanghai时区时,它可能会返回最早的历史记录。
实际使用建议
对于现代时间:上海时区就是UTC+8,不用担心这个历史数据
如果需要处理历史日期:时区库会自动处理正确的历史时区偏移
大多数情况:你看到LMT+8:06:00只是时区对象的字符串表示,实际使用时都是UTC+8
简单说:这是个历史遗迹,不影响现在使用。现在上海(以及全中国)使用的就是标准的UTC+8时间。
【 在 hgoldfish 的大作中提到: 】
: 这种纪录的存在不是坑人么!!
: 有人给我报了 BUG 说昨天零点的数据怎么都显示成前天的了。
: 这个代码还是 AI 写给我的。
: ...................
--
FROM 182.85.140.*
我使用了 django 的 timezone.get_current_timezone() 给返回这个时区信息。
【 在 adamhj 的大作中提到: 】
: ds说历史时间才会使用这种数据,是不是遇到什么bug了?
: ---
: 历史背景
: ...................
--
FROM 112.48.72.*
按道理tz默认应该是用最新的记录
不可能设计成从旧往新拿
【 在 adamhj 的大作中提到: 】
: ds说历史时间才会使用这种数据,是不是遇到什么bug了?
: ---
: 历史背景
: ...................
--
FROM 220.249.170.*
那肯定是AI用错了库
【 在 hgoldfish 的大作中提到: 】
: 这种纪录的存在不是坑人么!!
: 有人给我报了 BUG 说昨天零点的数据怎么都显示成前天的了。
: 这个代码还是 AI 写给我的。
: ...................
--
FROM 120.244.14.204
get_current_timezone
You can get the name of the current time zone using the get_current_timezone tag:
看起来这玩意儿返回的是个名字类似Asia/Shanghai?你确认是这个方法?
我感觉是不是别的代码的问题
手头没django环境没法测,瞎说的
【 在 hgoldfish 的大作中提到: 】
: 我使用了 django 的 timezone.get_current_timezone() 给返回这个时区信息。
--
FROM 120.244.14.204