Skip to content

albertyw/localtimezone

Folders and files

NameName
Last commit message
Last commit date

Latest commit

bda4671 · Mar 25, 2025
Mar 5, 2023
Mar 26, 2023
Feb 16, 2025
Feb 1, 2023
Mar 25, 2025
Mar 24, 2025
Sep 5, 2022
Aug 22, 2023
Feb 8, 2025
Mar 24, 2025
Nov 8, 2022
Mar 6, 2025
Mar 5, 2023
Sep 10, 2022
Mar 6, 2025
Mar 6, 2025
Mar 20, 2023
Mar 6, 2025
Mar 24, 2025

Repository files navigation

github.com/albertyw/localtimezone

Build Status Go Reference Go Report Card Maintainability Test Coverage License: MIT

LatLong conversion to time zone. This is a fork of github.com/ugjka/go-tz.

Usage / Example

import localtimezone "github.com/albertyw/localtimezone/v3"

// Loading Zone for Line Islands, Kiritimati
tz, err := localtimezone.NewLocalTimeZone()
if err != nil {
    panic(err)
}
zone, err := tz.GetZone(localtimezone.Point{
    Lon: -157.21328, Lat: 1.74294,
})
if err != nil {
    panic(err)
}
fmt.Println(zone[0])

Uses simplified shapefile from timezone-boundary-builder

GeoJson Simplification done with orb.

Features

  • The timezone shapefile is embedded in the build binary
  • 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 purely in-memory. Uses ~50MB of ram

Updating data

Get the most current timezone release version at https://github.com/evansiroky/timezone-boundary-builder/tags

go run tzshapefilegen/main.go

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).