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

如何在Python中将指定UTC时间转换为EDT时区的目标格式?

解决UTC时间转EDT指定格式的问题

嘿,这事儿好办!咱们一步步来把这个UTC时间转成你要的EDT格式~

核心思路

要完成这个需求,咱们需要三步:

  • 解析输入的UTC时间字符串,得到带时区信息的datetime对象
  • 将这个UTC时间转换为美国东部时区(EDT是夏令时,该时区会自动切换EST/EDT)
  • 按照指定格式输出时间字符串

代码实现(Python 3.9+,用标准库)

Python 3.9及以上自带zoneinfo库,无需额外安装:

from datetime import datetime
from zoneinfo import ZoneInfo

# 你的UTC时间字符串
utc_time_str = "Sat, 19 May 2018 16:32:56 +0000"

# 第一步:解析UTC时间,%z会识别末尾的+0000为UTC时区
utc_dt = datetime.strptime(utc_time_str, "%a, %d %b %Y %H:%M:%S %z")

# 第二步:转换为美国东部时区(自动处理EDT/EST切换)
edt_dt = utc_dt.astimezone(ZoneInfo("America/New_York"))

# 第三步:格式化成你要的20180519-113256样式
target_format = edt_dt.strftime("%Y%m%d-%H%M%S")

print(target_format)  # 输出:20180519-113256

兼容Python 3.8及以下版本

如果你的Python版本低于3.9,需要先安装pytz库(pip install pytz),代码调整如下:

from datetime import datetime
import pytz

utc_time_str = "Sat, 19 May 2018 16:32:56 +0000"
utc_dt = datetime.strptime(utc_time_str, "%a, %d %b %Y %H:%M:%S %z")

# 使用pytz指定美国东部时区
eastern_tz = pytz.timezone("America/New_York")
edt_dt = utc_dt.astimezone(eastern_tz)

target_format = edt_dt.strftime("%Y%m%d-%H%M%S")
print(target_format)

关键细节说明

  • 为什么用America/New_York而不是直接写EDT?因为这个时区会根据日期自动切换夏令时(EDT)和冬令时(EST),不用你手动判断季节,更靠谱。
  • %z格式符是关键!它能识别输入字符串里的+0000,让解析后的datetime对象带时区信息,这样才能正确进行时区转换。
  • 最后用strftime的%Y%m%d-%H%M%S格式,正好匹配你要的年(4位)月(2位)日(2位)-时(2位)分(2位)秒(2位)样式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:02:36