使用 pytz 将日期时间从一个时区转换为另一个时区

Posted

技术标签:

【中文标题】使用 pytz 将日期时间从一个时区转换为另一个时区【英文标题】:Converting datetime from one time zone to another using pytz 【发布时间】:2019-06-19 20:25:08 【问题描述】:

我有一个数据集,其中包括来自纽约的日期/时间戳,没有时区信息。不记录 EDT 或 EST。

日期包括几年的每日数据,因此包括两者:

    美国东部时间时区 美国东部时间时区

我想将这些日期/时间戳转换为法兰克福时间。

这涉及使用:

    CET 时区 CEST 时区

视具体日期而定。

我已经看到,在纽约时间,pytz 包括 timezone('US/Eastern'),如果我理解正确的话,它包括两个时区 (New York Timezones)。

对于法兰克福,您似乎需要明确指定 CET 或 CEST (Frankfurt Timezones)。

如何使用pytz来完成这个转换?

【问题讨论】:

pytz - Converting UTC and timezone to local time的可能重复 虽然提到的帖子包含信息,但将一个城市时区转换为另一个城市时区的具体情况非常具体。寻找“UTC”和“本地时间”来解决这个问题可能并不直观(至少不是每个人)。 【参考方案1】:

您可以使用localize() 在纽约时间和astimezone() 创建天真的日期时间对象,然后将它们转换为法兰克福(柏林)时间,从而将纽约时间转换为法兰克福时间。使用时区名称(而不是仅在一年中的部分时间适用的特定时区缩写)将为您处理夏令时差异。

例如:

from datetime import datetime
from pytz import timezone

newyork_tz = timezone('America/New_York')
berlin_tz = timezone('Europe/Berlin')

newyork = newyork_tz.localize(datetime(2018, 5, 1, 8, 0, 0))
berlin = newyork.astimezone(berlin_tz)
print(newyork)
print(berlin)
# OUTPUT
# 2018-05-01 08:00:00-04:00
# 2018-05-01 14:00:00+02:00

【讨论】:

以上是关于使用 pytz 将日期时间从一个时区转换为另一个时区的主要内容,如果未能解决你的问题,请参考以下文章

如何在java中使用日光将日期格式从一个时区转换为另一种时区[重复]

python / pytz问题从本地时区转换为UTC然后返回

Python:如何将日期时间/时间戳从一个时区转换为另一个时区?

使用 pytz 进行日期时间时区转换

使用 pytz 进行日期时间和时区转换 - 令人兴奋的行为

python 使用`pytz`将时间和日期对话转换为其他时区。