/go-tz

timezone lookup in go

Primary LanguageGoMIT LicenseMIT

go-tz

tz-lookup by lon and lat

GoDoc Go Report Card License: MIT Donate

lookup timezone for a given location

Usage

import "gopkg.in/ugjka/go-tz.v2/tz"

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 using go-bindata
  • Supports overlapping zones
  • You can load your own geojson shapefile if you want
  • Sub millisecond lookup even on old hardware

Problems

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

Licenses

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

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