我想将我所在国家/地区的 UTC 时间转换为 UTC(西班牙)。我正在使用模块 pytz 进行转换,但我得到的结果是 UTC-1 而不是 UTC+1。这是我的代码:
import datetime
import pytz
madrid = pytz.timezone("Europe/Madrid")
UTC_time = datetime.datetime.strptime("2019-03-01 14:45","%Y-%m-%d %H:%M")
madrid_dt = madrid.localize(UTC_time, is_dst=None)
MadridTime = madrid_dt.astimezone(pytz.utc).strftime ("%Y-%m-%d %H:%M")
这是输出:
UTC_Time: 2019-03-01 14:45:00
MadridTime: 2019-03-01 13:45
我需要马德里时间返回 15:45 而不是 13:45。我究竟做错了什么?
EDITED2:在您的帮助下,我发现我混淆了 localize 和 astimeszone 的使用。现在我面临两个新问题。这是新代码:
import datetime
import pytz
dt = datetime.datetime.strptime('2019-03-01 14:45','%Y-%m-%d %H:%M')
madrid_tz = pytz.timezone('Europe/Madrid')
madrid = dt.astimezone(madrid_tz)
print(madrid)
# 2019-03-01 14:45:00+01:00
print(madrid.strftime ("%Y-%m-%d %H:%M"))
# 2019-03-01 14:45
问题 1:在 Windows 10、Python3 中运行此代码,我预期的输出2019-03-01 15:45:00不是2019-03-01 14:45:00+01:00. 我试图格式化它,strftime ("%Y-%m-%d %H:%M")但这并没有成功。
问题 2:在 Raspberrypi(这是我将在完成后运行代码的地方)中运行此代码,Python3,我在这一行中收到一个 ValueError madrid = dt.astimezone(madrid_tz)。错误是ValueError: astimezone() cannot be applied to a naive datetime
有任何想法吗?
蝴蝶刀刀
繁星淼淼
相关分类