Skip to content

ugjka/go-tz

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Mar 24, 2025
c87a218 · Mar 24, 2025

History

10 Commits
Feb 21, 2024
Feb 24, 2024
Feb 21, 2024
Feb 21, 2024
Feb 21, 2024
Feb 21, 2024
Feb 21, 2024
Feb 21, 2024
Mar 24, 2025
Feb 21, 2024
Feb 21, 2024
Feb 21, 2024
Feb 21, 2024
Mar 24, 2025
Feb 21, 2024
Mar 18, 2024

Repository files navigation

go-tz

Go Reference

Time zone lookup by Lon and Lat

Usage

import "github.com/ugjka/go-tz/v2"

Example

// Loading Zone for Line Islands, Kiritimati
zone, err := tz.GetZone(tz.Point{
    Lon: -157.21328, Lat: 1.74294,
})
if err != nil {
    panic(err)
}
fmt.Println(zone[0])
[ugjka@archee example]$ go run main.go
Pacific/Kiritimati

Uses simplified shapefile from timezone-boundary-builder

GeoJson Simplification done with mapshaper

Features

  • The timezone shapefile is embedded in the build binary
  • Supports overlapping zones
  • You can load your custom geojson shapefile if you want
  • Sub-millisecond lookup even on old hardware

Problems

  • Shapefile is simplified using a lossy method so it may be inaccurate along the borders
  • This is purely in-memory. Uses ~50MB of ram

Licenses

The code used to look up the timezone for a location is licensed under the MIT License.

The data in the timezone shapefile is licensed under the Open Data Commons Open Database License (ODbL).