首页 > 解决方案 > 将带有时区的时间日期字符串转换为utc python

问题描述

我有一个基本字符串 + 另一个表示时区的字符串。我正在尝试返回 UTC 等价物..

timezone = "America/New_York"
scheduleDate = "2021-09-21 21:00:00"

dtimestamp = datetime.datetime.strptime(scheduleDate, '%Y-%m-%d %H:%M:%S').astimezone(
    pytz.timezone(timezone)).timestamp()
sdate = datetime.datetime.utcfromtimestamp(dtimestamp).strftime('%Y-%m-%dT%H:%M:%SZ')
print(sdate)

标签: python

解决方案


这可行,但不确定是否有更好的方法。我以前没有仔细看过pytz文档。

from datetime import datetime

import pytz

timezone = "America/New_York"
scheduleDate = "2021-09-21 21:00:00"

# Convert to naive datetime
dt_naive: datetime = datetime.strptime(scheduleDate, '%Y-%m-%d %H:%M:%S')

# localize datetime with ET timezone
dt: datetime = pytz.timezone(timezone).localize(dt_naive)

# normalize datetime to UTC time
dt_utc: datetime = pytz.utc.normalize(dt)

print(str(dt_utc))

推荐阅读