模块pytz:UTC减少而不是增加

Dan*_* LA 5 python utc pytz

编辑:我想在我的国家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")
Run Code Online (Sandbox Code Playgroud)

这是输出:

UTC_Time: 2019-03-01 14:45:00
MadridTime: 2019-03-01 13:45
Run Code Online (Sandbox Code Playgroud)

我需要马德里时间以15:45而不是13:45返回.我究竟做错了什么?

dec*_*eze 4

让我们更清楚地了解一下这里的内容:

\n\n
madrid = pytz.timezone('Europe/Madrid')\n
Run Code Online (Sandbox Code Playgroud)\n\n

欧洲/马德里时区,UTC+1/+2。

\n\n
naive_ts = datetime.strptime('2019-03-01 14:45', '%Y-%m-%d %H:%M')\n
Run Code Online (Sandbox Code Playgroud)\n\n

没有任何特定时区的 na\xc3\xafve 时间戳。

\n\n
madrid_ts = madrid.localize(naive_ts)\n
Run Code Online (Sandbox Code Playgroud)\n\n

相同的时间戳,现在附加时区 Europe/Madrid,即马德里 14:45 (UTC+1)

\n\n
utc_ts = madrid_ts.astimezone(pytz.utc)\n
Run Code Online (Sandbox Code Playgroud)\n\n

与 UTC马德里 14:45 (UTC+1)相同,因此,14:45 - 1 小时 \xe2\x86\x92 13:45。一切都如预期。如果马德里是 14:45,那么 UTC 时间就是 13:45,因为马德里比 UTC 早一小时。

\n\n
\n
datetime.now()\n
Run Code Online (Sandbox Code Playgroud)\n
\n\n

不管它是什么\xe2\x80\xa6,它与上面的两个时间戳无关,并且取决于你的机器的默认时区和执行此代码时的当前时间。

\n