Python 时区一致转换 [重复]

问题描述 投票:0回答:0

在阅读了(部分)文档和此处的几个线程之后,我试图编写一些简单的代码来将今天的特定时间转换为不同的时区。请注意,我对当前时间不感兴趣,而是对一些特定的时间转换感兴趣(例如,美国东部时间今天的 16:00:00 转换为 CET)。

为此,我想出了以下几点:

from datetime import datetime
from pytz import timezone

def get_time(hour, minute, second=0, from_dt="US/Eastern", to_dt="Europe/Amsterdam"):
    # Get a datetime of today in Europe/Amsterdam from XX:XX:XX in US/Eastern
    today = datetime.today()
    dt = datetime(year=today.year, month=today.month, day=today.day, hour=hour, minute=minute, second=second, tzinfo=timezone(from_dt))
    return dt.astimezone(tz=timezone(to_dt)).strftime("%H:%M:%S")

print(get_time(16,0))
print(get_time(16,0,from_dt="Europe/Amsterdam",to_dt="US/Eastern"))

然而,令我惊讶的是,这导致了非常混乱:

>>> print(get_time(16,0))
22:56:00
>>> print(get_time(16,0,from_dt="Europe/Amsterdam",to_dt="US/Eastern"))
11:42:00

我不明白发生了什么:我希望结果是一个准确的小时(即 00 分钟)和一致的转换(它以一种方式显示 +7,另一种方式显示 -4)。

python timezone pytz
© www.soinside.com 2019 - 2024. All rights reserved.