Documentation ¶
Overview ¶
Package localtimezone provides timezone lookup for a given location
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 ¶
* The shapefile is simplified using a lossy method so it may be innacurate along the borders
* This is purely in-memory. Uses ~50MB of ram
Index ¶
Constants ¶
const MockTimeZone = "America/Los_Angeles"
MockTimeZone is the timezone that is always returned from the NewMockLocalTimeZone client
const TZBoundaryVersion = "2025a"
TZBoundaryVersion is the version of tzdata that was used to generate timezone boundaries
const TZCount = 443
TZCount is the number of tzdata timezones supported
Variables ¶
var ErrNoTimeZone = errors.New("no timezone found")
ErrNoTimeZone is returned when no matching timezone is found This error should never be returned because the client will attempt to return the nearest zone
var ErrOutOfRange = errors.New("point's coordinates out of range")
ErrOutOfRange is returned when latitude exceeds 90 degrees or longitude exceeds 180 degrees
var MockTZShapeFile []byte
MockTZShapeFile is similar to TZShapeFile but maps the entire world to the timezone America/Los_Angeles. This data is a small json blob compressed with gzip. It is meant for testing.
var TZNames = []string{}/* 443 elements not displayed */
TZNames is an array of possible timezone names that may be returned by this library
var TZShapeFile []byte
TZShapeFile is the data containing geographic shapes for timezone borders. This data is a large json blob compressed with gzip.
Functions ¶
This section is empty.
Types ¶
type LocalTimeZone ¶
type LocalTimeZone interface { GetZone(p Point) (tzids []string, err error) GetOneZone(p Point) (tzid string, err error) LoadGeoJSON(io.Reader) error }
LocalTimeZone is a client for looking up time zones by Points
func NewLocalTimeZone ¶
func NewLocalTimeZone() (LocalTimeZone, error)
NewLocalTimeZone creates a new LocalTimeZone with real timezone data The client is threadsafe
func NewMockLocalTimeZone ¶
func NewMockLocalTimeZone() LocalTimeZone
NewMockLocalTimeZone creates a new LocalTimeZone that always returns America/Los_Angeles as the timezone The client is threadsafe
Directories ¶
Path | Synopsis |
---|---|
Code generation tool for embedding the timezone shapefile in the gotz package run "go generate" in the parent directory after changing the -release flag in gen.go
|
Code generation tool for embedding the timezone shapefile in the gotz package run "go generate" in the parent directory after changing the -release flag in gen.go |