.astimezone()将输出时间增加两个小时?为什么



输入:

import datetime
import pytz
local_time = datetime.datetime.now()
utc_now = datetime.datetime.utcnow()
print("Naive local is {}, while naive utc is {}".format(local_time, utc_now))
aware_local_time = pytz.utc.localize(local_time).astimezone()
aware_utc_now = pytz.utc.localize(utc_now)
print("Aware local is {}, while aware utc is {}".format(aware_local_time, aware_utc_now))

输出:

Naive local is 2020-08-25 09:40:54.336255, while naive utc is 2020-08-25 07:40:54.336255
Aware local is 2020-08-25 11:40:54.336255+02:00, while aware utc is 2020-08-25 07:40:54.336255+00:00

正如你所看到的,它在意识到的当地时间上增加了两个小时。我该怎么解决这个问题?

嗨,亲爱的,我认为你在这里制造了一点混乱,你应该使用utc_now而不是local_time,因为正如你所知,astimezone()调整了日期和时间数据,使结果与自己的UTC时间相同,但在tz的本地时间中,它们之间的时差为adding

在这里你可以看到上面的代码。

import datetime
import pytz
local_time = datetime.datetime.now()
utc_now = datetime.datetime.utcnow()
print("Naive local is {}, while naive utc is {}".format(local_time, utc_now))
aware_local_time = pytz.utc.localize(utc_now).astimezone()
aware_utc_now = pytz.utc.localize(utc_now)
print("Aware local is {}, while aware utc is {}".format(aware_local_time, aware_utc_now))

输出:

Naive local is 2020-08-25 15:17:48.587211, while naive utc is 2020-08-25 10:17:48.587477
Aware local is 2020-08-25 15:17:48.587477+05:00, while aware utc is 2020-08-25 10:17:48.587477+00:00

最新更新