使用pytz将日期时间从一个时区转换为另一个时区
Converting datetime from one time zone to another using pytz
我有一个数据集,其中包含来自纽约的 date/timestamps,但没有时区信息。 EDT 或 EST 未记录。
日期包括几年的每日数据,因此它包括:
- EDT 时区
- EST 时区
我想将那些 date/timestamps 翻译成法兰克福时间。
这涉及使用:
- CET 时区
- CEST 时区
以具体日期为准
我看到在纽约时间,pytz 包括 timezone('US/Eastern')
,如果我理解正确的话,它包括两个时区 (New York Timezones)。
对于法兰克福,您似乎需要明确指定 CET 或 CEST
(Frankfurt Timezones).
如何使用 pytz 完成此转换?
您可以从纽约时间转换为法兰克福时间,方法是使用 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
我有一个数据集,其中包含来自纽约的 date/timestamps,但没有时区信息。 EDT 或 EST 未记录。
日期包括几年的每日数据,因此它包括:
- EDT 时区
- EST 时区
我想将那些 date/timestamps 翻译成法兰克福时间。
这涉及使用:
- CET 时区
- CEST 时区
以具体日期为准
我看到在纽约时间,pytz 包括 timezone('US/Eastern')
,如果我理解正确的话,它包括两个时区 (New York Timezones)。
对于法兰克福,您似乎需要明确指定 CET 或 CEST (Frankfurt Timezones).
如何使用 pytz 完成此转换?
您可以从纽约时间转换为法兰克福时间,方法是使用 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