You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何pytz转换美国东部时区时偏移为-0456而非-0500?

为什么用pytz转换1900年的时区得到的是LMT-0456而非-0500?

核心原因:历史时区规则差异

你看到的LMT -0456不是问题,是符合历史事实的结果:

  • 1900年时,美国东部还没统一采用如今的UTC-5(EST/EDT)标准时区。当时纽约使用的是本地平均时间(Local Mean Time, LMT)——这是根据当地经度(约西经74°00')计算出的太阳平均时间,对应的UTC偏移正好是-04:56。
  • 美国东部直到1918年才推行标准时区制度,之后才统一使用UTC-5的偏移(夏令时期间调整为UTC-4)。

代码中的笔误修正

你的代码里存在未定义变量的问题:lesson应该替换为original_utc,修正后的代码如下:

import datetime
import pytz

original_utc = datetime.datetime(1900,6,6,10,40, tzinfo=pytz.timezone('UTC'))
in_eastern = original_utc.astimezone(pytz.timezone('America/New_York'))

print("UTC time: ", original_utc.strftime("%Y:%m:%d %H:%M:%S %Z %z"))
print("----------")
print("EST time", in_eastern.strftime("%Y:%m:%d %H:%M:%S %Z %z"))

验证现代时区偏移

如果想验证1918年之后的美国东部时区偏移,可以把时间改为较近的日期,比如:

original_utc = datetime.datetime(2024,6,6,10,40, tzinfo=pytz.timezone('UTC'))
in_eastern = original_utc.astimezone(pytz.timezone('America/New_York'))
# 输出会显示 EDT -0400(夏令时),非夏令时季节则为 EST -0500

内容的提问来源于stack exchange,提问作者abhivemp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 20:50:27