tznn
Tiny helper for IANA time zones and abbreviations.
This package provides a small utility class backed by a static mapping in timezone.json to:
- List available IANA time zone names
- Look up the time zone abbreviation (e.g., SGT, EDT) for a given zone
Notes:
- Abbreviations are static values from
timezone.jsonand are not date-aware (no DST transitions). - On Windows,
tzdatais listed as a dependency in case you choose to extend functionality using IANA tzdata; the current implementation only readstimezone.jsonand does not require system tzdata at runtime.
Install
From the project root:
pip install .
For development (tests, etc.):
pip install -r requirements.txt
Quick start
from tznn import tznn
tz = tznn()
# 1) Get a sorted list of available IANA time zone names
zones = tz.get_available_time_zones()
print(len(zones), zones[:5])
# 2) Get the abbreviation for a known time zone
print(tz.get_abbr("Asia/Singapore")) # -> "SGT"
print(tz.get_abbr("America/New_York")) # -> e.g., "EDT" per timezone.json
# 3) Get the full mapping of zone -> abbreviation
mapping = tz.get_all_available_time_zones()
print(mapping["America/New_York"]) # -> "EDT"
Why use this package?
Default Python libraries do not provide a simple way to get static time zone abbreviations from IANA zone names. This package fills that gap with a lightweight solution. Example :
from datetime import datetime
from zoneinfo import ZoneInfo
dt_utc = datetime(2025, 9, 23, 3, 2, 7)
dt_vn = dt_utc.astimezone(ZoneInfo("Asia/Ho_Chi_Minh"))
print(dt_vn.strftime("%d/%m/%Y %H:%M:%S %Z %z")) # → 23/09/2025 10:02:07 ICT +0700
The result is 23/09/2025 02:02:07 +07 +0700 but expectation should be 23/09/2025 10:02:07 ICT +0700
API
Class: tznn
-
get_available_time_zones() -> list[str]- Returns a sorted list of all IANA zone names present in
timezone.json.
- Returns a sorted list of all IANA zone names present in
-
get_all_available_time_zones() -> dict[str, str]- Returns the entire mapping of
zone_name -> abbreviationloaded fromtimezone.json.
- Returns the entire mapping of
-
get_abbr(tz_name: str) -> str- Returns the abbreviation for the given IANA time zone name.
- Raises
ValueErrorif the zone name is not found in the mapping.
Data source and limitations
- Data is loaded from the local
timezone.jsonfile included in the repository. - Abbreviations are static and may not reflect historical or future DST changes. If you need date-aware abbreviations,
consider using Python's
zoneinfomodule (Python 3.9+) together with an appropriate tz database.
Testing
Run the test suite from the project root:
pytest -q
The tests validate:
- The list of available zones is sorted and non-empty.
- The mapping includes known zones and string abbreviations.
get_abbrreturns correct abbreviations and raises on invalid zones.
Roadmap (ideas)
- Optional date-aware abbreviation lookup using
zoneinfo(orpytzfor older Pythons). - Utilities for DST-aware conversions and current time by zone.
Knowledge
- https://adamj.eu/tech/2021/05/06/how-to-list-all-timezones-in-python/
- https://stackoverflow.com/questions/78580391/zoneinfo-is-missing-timezone-names-that-pytz-has
- https://docs.python.org/3/library/zoneinfo.html
- https://github.com/python/tzdata/issues/111
- https://discuss.python.org/t/get-local-time-zone/4169/10
Metadata
Release files for tznn 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tznn-0.1.0.tar.gz | 11.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tznn-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 20.5 kB
Release files / tznn-0.1.0.tar.gz
| Download URL | tznn-0.1.0.tar.gz |
|---|---|
| Size | 11.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
40ee04f5baf50de3b2c22847d66fe91c19ab48119a6f0029acaa11113742665f
|
|
BLAKE2b-256 checksum How to use checksums |
061d74b30418796c0a52ede18b45975ae506705b4fa4103506ad2ccc5e73a7b3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Release files / tznn-0.1.0-py3-none-any.whl
| Download URL | tznn-0.1.0-py3-none-any.whl |
|---|---|
| Size | 9.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b0424d82f5b13d084d11497a13df9337218490ff62ce4b2e30a1f9c7118784f0
|
|
BLAKE2b-256 checksum How to use checksums |
bfeacd6581aec3583c4ddd809548ecae8dad664b90622e67d547d60ca56c6f4b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|