IANA Time Zone Database
The authoritative rules, transitions, aliases, and country-to-zone tables. Current release observed: 2026d.
zone.tab, zone1970.tab, iso3166.tab.A practical catalog of the files needed to replace Dately’s external timezone and holiday calls. Each entry shows the actual file, its download location, what it supplies, and where it should live.
Checked 24 September 2026 · Links point to the source project whenever a stable direct download is unavailable.
holidays plus OpenHolidays. Keep the very large IP and polygon files outside the Python wheel.These are complementary datasets. They join together through IANA timezone IDs, ISO country codes, coordinates, or dates.
| Question | File/source | Answer produced | Runtime? |
|---|---|---|---|
| What is the correct offset at this date? | IANA TZDB / Python tzdata | America/New_York → UTC−04:00 | Yes, local |
| Which zone contains these coordinates? | Timezone Boundary Builder | 40.71, −74.01 → America/New_York | Yes, optional |
| Where is this city? | GeoNames | London → coordinates + country | Yes, optional |
| What is this zone called in another language? | Unicode CLDR | Localized display name | Generated subset |
| Which IANA zone matches a Windows zone? | CLDR windowsZones.xml | Eastern Standard Time → America/New_York | Generated subset |
| Is this date a public holiday? | vacanza/holidays generated JSON | Date, name, country/subdivision | Yes, local |
| When are school holidays? | OpenHolidays data | Date ranges and regional scope | Optional/local |
| What timezone is this IP probably in? | DB-IP Lite + timezone polygons | IP → coordinates → IANA zone | Server-side |
These sources replace the damaged static offsets in files/timezone_data.json. Offsets must be calculated for a specific date because daylight-saving and historical rules change.
The authoritative rules, transitions, aliases, and country-to-zone tables. Current release observed: 2026d.
zone.tab, zone1970.tab, iso3166.tab.tzdataCompiled TZif files packaged for Python’s zoneinfo. This is especially useful on Windows, where an operating-system timezone database may be absent.
Location: install from PyPI; Python discovers its bundled zoneinfo/ tree automatically.
tzdata as a Dately dependency; do not manually copy the internal TZif files.Names and interoperability mappings. CLDR complements IANA; it does not replace the actual timezone transition rules.
Timezone rules do not contain polygon borders or a city search index. These files provide those missing layers.
Polygons carrying an IANA tzid. Choose “now” for present-day lookup or “1970” when historical consistency matters.
Tab-separated gazetteer data for place search, coordinates, country information, and alternate/localized names.
Holiday data is partly rule-based and partly curated. For Dately’s Python 3.8–3.14 support, generate version-neutral JSON instead of importing a Python-3.10+ holiday library at runtime.
vacanza/holidaysThis is executable Python rule data, not one downloadable database file. Run it in a Python 3.10+ update job and export only the countries, subdivisions, years, and fields Dately supports.
Repository-based public and school holiday source data, with strong European coverage and documented upstream government sources.
An IP database only estimates a location. To get an IANA timezone, join the resulting coordinates against Timezone Boundary Builder polygons.
America/New_YorkUpdated monthly. At the time checked: about 7.75 million records; approximately 658 MB CSV or 121 MB MMDB. Download URLs are release-specific, so use the official download page.
Attribution required: DB-IP specifies visible attribution, including a link for web applications that display or use results. Accuracy is intentionally lower than its paid database.
“Free to download” does not mean “small enough or licensed appropriately to bundle in every wheel.”
| Data | Suggested Dately location | Ship in wheel? | Reason |
|---|---|---|---|
Python tzdata | Declared dependency | Yes | Small, standard, and handles Windows cleanly. |
| Windows ↔ IANA map | files/windows_zones.json generated from CLDR | Yes | A compact derived subset. |
| Country/zone names | files/timezone_names.json generated from IANA/CLDR | Yes | Bundle only the fields/locales the API exposes. |
| Public holidays | files/holidays/*.json generated by year | Maybe | Bundle a documented year window or download optional packs. |
| GeoNames city index | Optional data pack/cache | Usually no | Size grows quickly; city search can be an extra. |
| Timezone polygons | Optional data pack or service database | No | Tens of MB compressed and ODbL obligations apply. |
| DB-IP City Lite | Private server data directory | No | Hundreds of MB, monthly updates, visible attribution. |
| OpenHolidays raw repository | Build/update workspace | No | Normalize only the required records and preserve licensing metadata. |
Add tzdata, use zoneinfo for date-aware calculations, and generate a small IANA/CLDR metadata file. This fixes the current offset problem without introducing the geographic datasets.
Create a Python 3.10+ update script using holidays; output normalized JSON consumed by Dately on Python 3.8–3.14. Add OpenHolidays later for school dates and gaps.
Use cities15000.zip for a manageable city index and timezones-now.geojson.zip for coordinates. Keep both out of the base wheel.
Load DB-IP MMDB server-side, obtain coordinates, and query the timezone polygons. This replaces the current IP API without shipping a huge database to every Python user.