首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用zoneinfo将感知时区转换为UIC时区(移离pytz)

使用zoneinfo将感知时区转换为UIC时区(移离pytz)
EN

Stack Overflow用户
提问于 2021-12-06 17:29:28
回答 2查看 650关注 0票数 1

我使用Python3.8,所以我使用https://pypi.org/project/backports.zoneinfo/获取zoneinfo。Django不赞成使用pytz,所以我正在执行从pytzzoneinfo的更改

用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?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-12-09 13:05:56

pytz.localize只用于天真的日期时间(没有时区信息的日期时间),所以

代码语言:javascript
复制
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构造是

代码语言:javascript
复制
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是在系统时区中表示的。

票数 2
EN

Stack Overflow用户

发布于 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)

变成了

代码语言:javascript
复制
my_datetime.astimezone(timezone.utc)

现在,即使在没有UTC日期时间的情况下,日期算法也能工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70249473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档