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

如何获取Python中美国东部时间datetime对应的epoch时间戳?

获取美国东部时区datetime对应的Epoch秒数

要获取美国东部时区(America/New_York)datetime对应的自Epoch以来的秒数,核心是先确保datetime对象包含正确的时区信息,再调用其timestamp()方法即可——这个方法会自动处理时区到UTC的转换,直接返回自1970-01-01 UTC以来的秒数。

基于pytz的实现(兼容Python 3.8及以下)

你提供的代码里,astimezone(et_tz)是多余的,因为et_tz.localize()已经为无时区信息的datetime对象添加了美东时区信息。优化后的完整代码如下:

import pytz
from datetime import datetime

# 初始化美国东部时区对象
et_tz = pytz.timezone('America/New_York')

# 为无时区的datetime添加时区信息,得到带时区的datetime对象
initial_start_dt = et_tz.localize(datetime(2024, 8, 24, 4, 0, 0))
initial_end_dt = et_tz.localize(datetime(2024, 8, 24, 5, 0, 0))

# 获取对应的Epoch秒数(浮点数,包含毫秒级精度)
start_epoch = initial_start_dt.timestamp()
end_epoch = initial_end_dt.timestamp()

# 如果需要整数秒,可做类型转换
start_epoch_int = int(start_epoch)
end_epoch_int = int(end_epoch)

print(start_epoch_int)  # 输出示例:1724493600
print(end_epoch_int)    # 输出示例:1724497200

基于标准库zoneinfo的实现(Python 3.9+推荐)

Python 3.9及以上自带了zoneinfo库,无需安装第三方包,代码更简洁:

from datetime import datetime
from zoneinfo import ZoneInfo

# 初始化美国东部时区对象
et_tz = ZoneInfo('America/New_York')

# 直接创建带时区的datetime对象
initial_start_dt = datetime(2024, 8, 24, 4, 0, 0, tzinfo=et_tz)
initial_end_dt = datetime(2024, 8, 24, 5, 0, 0, tzinfo=et_tz)

# 获取Epoch秒数
start_epoch = initial_start_dt.timestamp()
end_epoch = initial_end_dt.timestamp()

关键说明

  • timestamp()方法会自动处理夏令时等时区规则,确保计算的Epoch秒数准确对应UTC时间的偏移。
  • 如果你用strftime('%s')来计算,会忽略时区信息,直接将datetime视为本地时区时间,这也是你提到的已有问题未考虑时区的原因,所以务必使用带时区的datetime对象调用timestamp()方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 09:12:16