【发布时间】:2019-07-23 15:40:49
【问题描述】:
编辑: 我想在我的国家 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,我在这一行 madrid = dt.astimezone(madrid_tz) 中得到一个 ValueError。错误是ValueError: astimezone() cannot be applied to a naive datetime
有什么想法吗?
【问题讨论】:
-
2 小时轮班看起来像夏令时问题。
-
你为什么使用
is_dst=None?有什么具体原因吗? -
我会尝试
local.localize(TheTime, is_dst=True),但这是在黑暗中拍摄