准确的 utc 时间和转换为 utc 时间的本地时间不同 python
exact utc time and localtime converted to utc time are different python
我尝试打印准确的 UTC 时间,然后尝试打印 UTC 时间,方法是首先获取本地时间,然后将其转换为 UTC 时间,但它们有 11 分钟的差异
为什么会发生这种情况,我该如何解决这个问题,以便在我直接获取 UTC 时间时获得打印的正确 UTC 时间
from datetime import datetime, tzinfo
import tzlocal
import pytz
local_time =datetime.now()
tz = tzlocal.get_localzone()
print(tz)
utc_time = local_time.replace(tzinfo=tz).astimezone(pytz.utc)
print(utc_time)
correct_utc =datetime.utcnow()
print(correct_utc)
输出
Asia/Colombo
2021-07-18 01:54:31.442555+00:00
2021-07-18 01:43:31.619536
我必须制作一个程序,该程序接受日期时间字符串,然后将它们转换为日期时间对象,然后将它们转换为 utc,因此使用 astimezone 将毫无意义,因为该程序将 运行 在云中,因此它不知道它必须转换的时区
我认为问题可能出在 replace
函数参数 tzinfo=tz
中。 tzinfo
需要一个 dateutil.tz.tz.tzfile
对象,而您传入的 tz
是 pytz
库中的一个 pytz.tzfile.Asia/Colombo
对象。您可以解决此问题,而不是使用 tzinfo=tz
,您可以使用 str(tz)
函数将 tz
转换为字符串类型,然后使用函数 dateutil.tz.gettz
获取时区的 [=14] =] 对象 (tzinfo=dateutil.tz.gettz(str(tz))
)
from datetime import datetime, tzinfo
import tzlocal
import pytz
import dateutil.tz
local_time =datetime.now()
tz = tzlocal.get_localzone()
print(tz)
utc_time = local_time.replace(tzinfo=dateutil.tz.gettz(str(tz))).astimezone(pytz.utc)
print(utc_time)
correct_utc =datetime.utcnow()
print(correct_utc)
我尝试打印准确的 UTC 时间,然后尝试打印 UTC 时间,方法是首先获取本地时间,然后将其转换为 UTC 时间,但它们有 11 分钟的差异
为什么会发生这种情况,我该如何解决这个问题,以便在我直接获取 UTC 时间时获得打印的正确 UTC 时间
from datetime import datetime, tzinfo
import tzlocal
import pytz
local_time =datetime.now()
tz = tzlocal.get_localzone()
print(tz)
utc_time = local_time.replace(tzinfo=tz).astimezone(pytz.utc)
print(utc_time)
correct_utc =datetime.utcnow()
print(correct_utc)
输出
Asia/Colombo
2021-07-18 01:54:31.442555+00:00
2021-07-18 01:43:31.619536
我必须制作一个程序,该程序接受日期时间字符串,然后将它们转换为日期时间对象,然后将它们转换为 utc,因此使用 astimezone 将毫无意义,因为该程序将 运行 在云中,因此它不知道它必须转换的时区
我认为问题可能出在 replace
函数参数 tzinfo=tz
中。 tzinfo
需要一个 dateutil.tz.tz.tzfile
对象,而您传入的 tz
是 pytz
库中的一个 pytz.tzfile.Asia/Colombo
对象。您可以解决此问题,而不是使用 tzinfo=tz
,您可以使用 str(tz)
函数将 tz
转换为字符串类型,然后使用函数 dateutil.tz.gettz
获取时区的 [=14] =] 对象 (tzinfo=dateutil.tz.gettz(str(tz))
)
from datetime import datetime, tzinfo
import tzlocal
import pytz
import dateutil.tz
local_time =datetime.now()
tz = tzlocal.get_localzone()
print(tz)
utc_time = local_time.replace(tzinfo=dateutil.tz.gettz(str(tz))).astimezone(pytz.utc)
print(utc_time)
correct_utc =datetime.utcnow()
print(correct_utc)