| .. | ||
| generate_timezone_table.py | ||
| README.md | ||
Scripts
generate_timezone_table.py
Generates src/location/timezone_offsets.zig with a lookup table mapping longitude to timezone offset.
How it works:
- Samples 360 longitudes (-180° to 179°) at 3 latitudes (0°, 30°N, 30°S)
- For each longitude, queries
timezonefinderlibrary for timezone at each latitude - Uses the most common timezone offset across the 3 latitudes (handles political boundaries like China)
- Generates a
[360]i16array with offsets in minutes from UTC
Usage:
./scripts/generate_timezone_table.py
Requirements:
- Uses
uvwith inline script dependencies (no manual installation needed) - Takes ~10-20 seconds to generate
Accuracy:
- Works well for mid-latitudes (±30°) where most population lives
- Can be off by 1-2.5 hours at extreme latitudes (e.g., Russia vs Australia at same longitude)
- Acceptable for "morning/afternoon/evening/night" weather labels
- If higher accuracy is needed, modify
getTimezoneOffset()to use latitude
Why this approach:
- O(1) lookup, no complex calculations at runtime
- Handles political boundaries (e.g., China's UTC+8 across all longitudes)
- Simple to regenerate with different latitude samples if needed
- API accepts
Coordinates(not just longitude) for future improvements