backports.zoneinfo
Backport of the standard library zoneinfo module
What it is and what it does
backports.zoneinfo is a backport of Python 3.9's standard library `zoneinfo` module to Python 3.6, 3.7, and 3.8. It provides the `ZoneInfo` class, which lets you attach IANA time zone information to datetime objects, enabling proper handling of daylight-saving transitions and timezone-aware arithmetic without manual normalization. The module uses system time zone data when available and falls back to the `importlib-resources` dependency if needed.
The package is a drop-in replacement for the standard library version, so code written for Python 3.9+ can be made backward-compatible by using a try-except import pattern. It handles ambiguous and imaginary times (e.g., during DST transitions) using the `fold` attribute, and datetime arithmetic automatically adjusts for offset changes across time zone boundaries.
Use it for:
- Support timezone-aware datetime handling in applications targeting Python 3.6–3.8 without reimplementing timezone logic.
- Migrate code from older Python versions to use modern IANA time zone handling before upgrading to Python 3.9+.
- Handle DST transitions and ambiguous times correctly in scheduling, logging, or time-series applications.
- Build cross-version compatible libraries that work on Python 3.6+ by conditionally importing from backports or stdlib.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Provides IANA time zone support for Python 3.6–3.8 by backporting the standard library's `zoneinfo` module, enabling timezone-aware datetime handling with automatic daylight-saving transitions.
Yes, if you need timezone support on Python 3.6–3.8. It is a stable, permissive-licensed backport with no known vulnerabilities and low maintenance burden since the implementation is frozen. However, if you are already on Python 3.9+, use the standard library `zoneinfo` instead. Dormant maintenance is not a concern here because the module is feature-complete.
Install
backports-zoneinfo on PyPI
pip
pip install backports-zoneinfouv
uv add backports-zoneinfopoetry
poetry add backports-zoneinfoInstalling backports.zoneinfo
Before you install
Medium install friction due to compiled wheels for multiple Python versions and platforms. Dormant maintenance status (last release June 2020, last commit September 2024) means no active development, but the package is stable and unlikely to need updates.
License in practice
Apache-2.0 permissive license allows free use, modification, and distribution in both open-source and proprietary projects with minimal restrictions.
Quickstart
pip install backports.zoneinfo
try:
import zoneinfo
except ImportError:
from backports import zoneinfo
from datetime import datetime
dt = datetime(1992, 3, 1, tzinfo=zoneinfo.ZoneInfo("Europe/Minsk"))
print(dt)
Requires Python 3.6 or later; on Python 3.9+ the standard library `zoneinfo` is preferred and this backport is not necessary.
Verify before relying
- Whether system time zone data is reliably available on all supported platforms or if tzdata fallback is typically required.
- Current maintenance status and whether the package receives bug fixes for Python 3.6–3.8 users.
Package facts
| License | Apache-2.0 (permissive) |
| Python support | supports the current Python release (>=3.6) |
| Install friction | medium — platform-specific wheel |
| Runtime dependencies | 1 — importlib-resources |
| Maintenance | dormant — 2,243 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 6,737,721/month — #1,861 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: backports.zoneinfo-0.2.1-cp36-cp36m-macosx_10_14_x86_64.whl; backports.zoneinfo-0.2.1-cp36-cp36m-manylinux1_i686.whl; backports.zoneinfo-0.2.1-cp36-cp36m-manylinux1_x86_64.whl; backports.zoneinfo-0.2.1-cp36-cp36m-win32.whl; backports.zoneinfo-0.2.1-cp36-cp36m-win_amd64.whl; backports.zoneinfo-0.2.1-cp37-cp37m-macosx_10_14_x86_64.whl; backports.zoneinfo-0.2.1-cp37-cp37m-manylinux1_i686.whl; backports.zoneinfo-0.2.1-cp37-cp37m-manylinux1_x86_64.whl; backports.zoneinfo-0.2.1-cp37-cp37m-win32.whl; backports.zoneinfo-0.2.1-cp37-cp37m-win_amd64.whl; backports.zoneinfo-0.2.1-cp38-cp38-macosx_10_14_x86_64.whl; backports.zoneinfo-0.2.1-cp38-cp38-manylinux1_i686.whl; backports.zoneinfo-0.2.1-cp38-cp38-manylinux1_x86_64.whl; backports.zoneinfo-0.2.1-cp38-cp38-win32.whl; backports.zoneinfo-0.2.1-cp38-cp38-win_amd64.whl
Tags
More Software Development packages
Provides backported and experimental type hints…
permissive · top 100 on PyPI
numpyNumPy provides an N-dimensional array object…
permissive · top 100 on PyPI
fastapiFastAPI is a Python web framework for building…
permissive · top 100 on PyPI
annotated-docProvides a way to document function parameters,…
permissive · top 100 on PyPI
typerTyper builds command-line applications from…
permissive · top 1,000 on PyPI
distlibDistlib provides low-level packaging utilities…
permissive · top 1,000 on PyPI
pytzpytz brings the Olson timezone database into…
permissive · top 100 on PyPI
tzdataProvides IANA time zone data as a Python…
permissive · top 100 on PyPI
pytz-deprecation-shimProvides drop-in timezone shims that support…
permissive · top 5,000 on PyPI
backports-datetime-fromisoformatBackports expanded `datetime.fromisoformat`…
permissive · top 5,000 on PyPI
tzlocalReturns the IANA timezone name and tzinfo…
permissive · top 1,000 on PyPI
django-timezone-fieldProvides Django database, form, and REST…
permissive · top 5,000 on PyPI
wheneverWhenever provides type-safe, DST-aware datetime…
permissive · top 5,000 on PyPI
SQLAlchemy-UtcProvides a SQLAlchemy DateTime type that…
permissive · top 15,000 on PyPI
mcp-server-timeProvides a Model Context Protocol server that…
permissive · top 15,000 on PyPI
contextvarsProvides the PEP 567 contextvars module for…
permissive · top 5,000 on PyPI