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

3

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

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

  1. EDT时区
  2. EST时区

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

这涉及使用:

  1. CET时区
  2. CEST时区

具体取决于日期。

我发现对于纽约时间,pytz包括timezone('US/Eastern'),如果我理解正确,它包括两个时区(纽约时区)。

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

如何使用pytz进行此转换?


可能是pytz-将UTC和时区转换为本地时间的重复问题。 - stovfl
虽然提到的帖子包含了信息,但将一个城市的时区转换为另一个城市的时区的特定情况非常具体。查找“UTC”和“本地时间”来解决此问题可能不是很直观(至少对于每个人来说都是如此)。 - M.E.
1个回答

7
你可以使用 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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接