我使用Python3.8,所以我使用https://pypi.org/project/backports.zoneinfo/获取zoneinfo。Django不赞成使用pytz,所以我正在执行从pytz到zoneinfo的更改
用pytz就可以做from pytz import UTC了。python文档从datetime.timezone.utc' (and this does not have a localize`‘方法获得它。
如何执行与zoneinfo相同的操作:pytz.UTC.localize(my_datetime, is_dst=None)和zoneinfo?
发布于 2021-12-09 13:05:56
pytz.localize只用于天真的日期时间(没有时区信息的日期时间),所以
import datetime
import pytz
my_datetime = datetime.datetime(2021, 10, 31, 2)
pytz.UTC.localize(my_datetime, is_dst=None)
# -> datetime.datetime(2021, 10, 31, 2, 0, tzinfo=<UTC>)相应的pytz-less构造是
my_datetime.replace(tzinfo=datetime.timezone.utc)
# -> datetime.datetime(2021, 10, 31, 2, 0, tzinfo=datetime.timezone.utc)注意:而不是使用my_datetime.astimezone(timezone.utc),因为这将假定my_datetime是在系统时区中表示的。
发布于 2021-12-06 19:29:11
链接@MrFuppes提供:https://blog.ganssle.io/articles/2018/03/pytz-fastest-footgun.html解释说,pytz及其本地化方法是不标准的。现在,有了区域信息,我们可以使用一个简单的标准API,而不用担心自己在脚上开枪:
pytz.UTC.localize(my_datetime, is_dst=None)
变成了
my_datetime.astimezone(timezone.utc)现在,即使在没有UTC日期时间的情况下,日期算法也能工作。
https://stackoverflow.com/questions/70249473
复制相似问题