跳转到主要内容

标准库zoneinfo模块的后向移植

项目描述

backports.zoneinfo:标准库模块zoneinfo的后向移植

此包最初是PEP 615的参考实现,该PEP建议在标准库中支持IANA时区数据库,现在作为Python 3.6+(包括PyPy)的后向移植。

这暴露了backports.zoneinfo模块,该模块是zoneinfo模块的后向移植。后向移植的文档可以在readthedocs上找到。

如果系统有可用的时间区域数据,该模块将使用系统时间区域数据,如果没有,将回退到已安装的tzdata包(在PyPI上可用)。

安装和依赖此库

此模块在PyPI上称为backports.zoneinfo。要在本地环境中安装它,请使用

pip install backports.zoneinfo

或者(尤其是在Windows上),您也可以使用tzdata额外功能(这基本上只是声明对tzdata的依赖,所以这实际上并没有节省您任何输入 😅)

pip install backports.zoneinfo[tzdata]

如果您想在自己的应用程序中使用此功能,最好使用PEP 508环境标记来声明一个根据Python版本的条件依赖

backports.zoneinfo;python_version<"3.9"

Python 3.9+ 对 backports.zoneinfo 的支持目前很小,因为它预计您将使用标准库中的 zoneinfo 模块。

使用

backports.zoneinfo 模块应该是 Python 3.9 标准库模块 zoneinfo 的直接替换。如果您不支持低于 Python 3.9 的版本,您不需要这个库;如果您正在支持 Python 3.6+,您可能想使用这个惯用方法来“回退”到 backports.zoneinfo

try:
    import zoneinfo
except ImportError:
    from backports import zoneinfo

要使用此模块访问时区,构建一个 ZoneInfo 对象并将其附加到您的 datetime 上。

>>> from backports.zoneinfo import ZoneInfo
>>> from datetime import datetime, timedelta, timezone
>>> dt = datetime(1992, 3, 1, tzinfo=ZoneInfo("Europe/Minsk"))
>>> print(dt)
1992-03-01 00:00:00+02:00
>>> print(dt.utcoffset())
2:00:00
>>> print(dt.tzname())
EET

算术操作无需“归一化”步骤即可按预期工作。

>>> dt += timedelta(days=90)
>>> print(dt)
1992-05-30 00:00:00+03:00
>>> dt.utcoffset()
datetime.timedelta(seconds=10800)
>>> dt.tzname()
'EEST'

模糊和假设的时间使用添加在 PEP 495 中的 fold 属性处理。

>>> dt = datetime(2020, 11, 1, 1, tzinfo=ZoneInfo("America/Chicago"))
>>> print(dt)
2020-11-01 01:00:00-05:00
>>> print(dt.replace(fold=1))
2020-11-01 01:00:00-06:00

>>> UTC = timezone.utc
>>> print(dt.astimezone(UTC))
2020-11-01 06:00:00+00:00
>>> print(dt.replace(fold=1).astimezone(UTC))
2020-11-01 07:00:00+00:00

贡献

目前我们不接受对该存储库的贡献,因为我们尚未实施 CLA,并且我们希望避免使标准库的采用过程复杂化。对 CPython 的贡献最终将回溯到这个存储库——有关如何为 CPython 贡献的更多信息,请参阅 Python 开发者指南

项目详情


下载文件

下载适用于您平台的应用程序。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源代码发行版

backports.zoneinfo-0.2.1.tar.gz (74.1 kB 查看散列)

上传

构建发行版

backports.zoneinfo-0.2.1-cp38-cp38-win_amd64.whl (39.0 kB 查看散列)

上传 CPython 3.8 Windows x86-64

backports.zoneinfo-0.2.1-cp38-cp38-win32.whl (36.8 kB 查看散列)

上传 CPython 3.8 Windows x86

backports.zoneinfo-0.2.1-cp38-cp38-manylinux1_i686.whl (72.1 kB 查看散列)

上传 CPython 3.8

backports.zoneinfo-0.2.1-cp38-cp38-macosx_10_14_x86_64.whl (35.8 kB 查看散列)

上传于 CPython 3.8 macOS 10.14+ x86-64

backports.zoneinfo-0.2.1-cp37-cp37m-win_amd64.whl (38.7 kB 查看哈希值)

上传于 CPython 3.7m Windows x86-64

backports.zoneinfo-0.2.1-cp37-cp37m-win32.whl (36.5 kB 查看哈希值)

上传于 CPython 3.7m Windows x86

backports.zoneinfo-0.2.1-cp37-cp37m-manylinux1_x86_64.whl (70.7 kB 查看哈希值)

上传于 CPython 3.7m

backports.zoneinfo-0.2.1-cp37-cp37m-manylinux1_i686.whl (69.0 kB 查看哈希值)

上传于 CPython 3.7m

backports.zoneinfo-0.2.1-cp37-cp37m-macosx_10_14_x86_64.whl (35.6 kB 查看哈希值)

上传于 CPython 3.7m macOS 10.14+ x86-64

backports.zoneinfo-0.2.1-cp37-cp37m-win_amd64.whl (38.7 kB 查看哈希值)

上传于 CPython 3.6m Windows x86-64

backports.zoneinfo-0.2.1-cp36-cp36m-win32.whl (36.5 kB 查看哈希值)

上传于 CPython 3.6m Windows x86

backports.zoneinfo-0.2.1-cp36-cp36m-manylinux1_x86_64.whl (70.7 kB 查看哈希值)

上传于 CPython 3.6m

backports.zoneinfo-0.2.1-cp36-cp36m-manylinux1_i686.whl (68.8 kB 查看哈希值)

上传于 CPython 3.6m

backports.zoneinfo-0.2.1-cp36-cp36m-macosx_10_14_x86_64.whl (35.6 kB 查看哈希值)

上传于 CPython 3.6m macOS 10.14+ x86-64

由以下支持