Python:如何在不知道DST是否在的情况下将时区识别的时间戳转换为UTC

2024-05-16 21:11:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将太平洋时间的原始时间戳转换为UTC时间。在下面的代码中,我可以指定我拥有的这个时间戳是太平洋时间,但它似乎不知道它应该是从UTC偏移-7小时,因为它只有10/21,DST还没有结束。

剧本:

import pytz
import datetime
naive_date = datetime.datetime.strptime("2013-10-21 08:44:08", "%Y-%m-%d %H:%M:%S")
localtz = pytz.timezone('America/Los_Angeles')
date_aware_la = naive_date.replace(tzinfo=localtz)
print date_aware_la

输出:

    2013-10-21 08:44:08-08:00

在DST于11月3日结束之前,它应该有一个-07:00的偏移量。当DST生效或不生效时,如何使时区感知日期具有正确的偏移量?pytz聪明到知道DST将在11月3日生效吗?

总体目标:我只是试图将时间戳转换为UTC,知道我将在太平洋时间获得时间戳,而不知道DST是否有效。我不是从python本身生成这个日期的,所以我不能只使用utc_now()。


Tags: 代码importdatetimedate时间la偏移量dst
1条回答
网友
1楼 · 发布于 2024-05-16 21:11:27

使用localize方法:

import pytz
import datetime
naive_date = datetime.datetime.strptime("2013-10-21 08:44:08", "%Y-%m-%d %H:%M:%S")
localtz = pytz.timezone('America/Los_Angeles')
date_aware_la = localtz.localize(naive_date)
print(date_aware_la)   # 2013-10-21 08:44:08-07:00

这将在the pytz documentation的“示例和用法”部分中介绍。

然后继续到UTC:

utc_date = date_aware_la.astimezone(pytz.utc)
print(utc_date)

相关问题 更多 >