使用pytz将datetime从一个时区转换为另一个时区

时间:2019-01-26 01:15:53

标签: python datetime timezone pytz timestamp-with-timezone

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

日期包含数年的每日数据,因此包括以下两个方面:

  1. EDT时区
  2. EST时区

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

这涉及使用:

  1. CET时区
  2. CEST时区

取决于具体日期。

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

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

如何使用pytz完成转换?

1 个答案:

答案 0 :(得分:2)

您可以通过使用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