wttr/scripts
2026-01-05 10:06:10 -08:00
..
generate_timezone_table.py timezone handling for metno 2026-01-04 22:47:12 -08:00
README.md timezone handling for metno 2026-01-04 22:47:12 -08:00

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 timezonefinder library for timezone at each latitude
  • Uses the most common timezone offset across the 3 latitudes (handles political boundaries like China)
  • Generates a [360]i16 array with offsets in minutes from UTC

Usage:

./scripts/generate_timezone_table.py

Requirements:

  • Uses uv with 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