Socket
Socket
Sign inDemoInstall

github.com/ardanlabs/timezone

Package Overview
Dependencies
0
Alerts
File Explorer

Install Socket

Detect and block malicious and high-risk dependencies

Install

    github.com/ardanlabs/timezone

Package timezone provides two ways to retrieve the timezone for any latitude,longitude position. https://developers.google.com/maps/documentation/timezone/ This API is free and limits you to 2,500 calls a day. You will receive a GoogleTimezone object if the call is successful. http://www.geonames.org/ This API is free with registration and has no limit. If you upgrade to a premium account you can be guaranteed fast and reliable response times. The TimezoneID is a location name corresponding to the IANA Time Zone database. Go provides this database in the /lib/time/zoneinfo.zip file. Because of this we can use the TimezoneID within the time package:


Version published

Readme

Source

timezone

import "github.com/ardanlabs/timezone"

  • Overview
  • Index
  • Examples

Overview

Package timezone provides two ways to retrieve the timezone for any latitude,longitude position.

Google Time Zone API

https://developers.google.com/maps/documentation/timezone/

This API is free and limits you to 2,500 calls a day. You will receive a GoogleTimezone object if the call is successful.

// RetrieveGoogleTimezone calls the Google API to retrieve the timezone for the lat/lng
latitude: The latitude position of the location
longitude: The longitude position of the location

// RetrieveGoogleTimezone(latitude float64, longitude float64) (googleTimezone *GoogleTimezone, err error)
DstOffset:    Offset for daylight-savings time in seconds. This will be zero if the time zone is not in Daylight Savings Time during the specified timestamp.
RawOffset:    Offset from UTC (in seconds) for the given location. This does not take into effect daylight savings.
TimezoneID:   Contains the ID of the time zone, such as "America/Los_Angeles" or "Australia/Sydney".
TimezoneName: Contains the long form name of the time zone. This field will be localized if the language parameter is set. eg. "Pacific Daylight Time" or "Australian Eastern Daylight Time"
Status:       Indicates the status of the response.
	OK               : Indicates that the request was successful.
	INVALID_REQUEST  : Indicates that the request was malformed.
	OVER_QUERY_LIMIT : Indicates the requestor has exceeded quota.
	REQUEST_DENIED   : Indicates that the the API did not complete the request. Confirm that the request was sent over http instead of https.
	UNKNOWN_ERROR    : Indicates an unknown error.
	ZERO_RESULTS     : Indicates that no time zone data could be found for the specified position or time. Confirm that the request is for a location on land, and not over water.

GeoNames Time Zone API

http://www.geonames.org/

This API is free with registration and has no limit. If you upgrade to a premium account you can be guaranteed fast and reliable response times.

// RetrieveGeoNamesTimezone calls the GeoNames API to retrieve the timezone for the lat/lng
latitude: The latitude position of the location
longitude: The longitude position of the location
userName: The GeoNames username for using the API

// RetrieveGeoNamesTimezone(latitude float64, longitude float64, userName string) (geoNamesTimezone *GeoNamesTimezone, err error)
Time:        	The local current time.
CountryName: 	ISO 3166 country code name
CountryCode: 	ISO 3166 country code
Sunset:      	Current days time for sunset
RawOffset:   	The amount of time in hours to add to UTC to get standard time in this time zone.
DstOffset:   	Offset to GMT at 1. July (deprecated)
GmtOffset:   	Offset to GMT at 1. January (deprecated)
Sunrise:     	Current days time for sunrise
TimezoneID:  	The name of the timezone (according to olson).
Longitude:   	Longitude used for the call
Latitude:    	Latitude used for the call

Using The Time Package

The TimezoneID is a location name corresponding to the IANA Time Zone database. Go provides this database in the /lib/time/zoneinfo.zip file. Because of this we can use the TimezoneID within the time package:

// Take the timezone id from the API call and create a location object
var location *time.Location
location, err = time.LoadLocation(TimezoneID)

// Use the location object to make sure this time is in the correct timezone
localTime := time.Date(year, time.Month(month), day, hour, minute, 0, 0, location)

// Convert to UTC, if required, based on the correct timezone
utcTime := localTime.UTC()

Index

Examples
Package files

doc.go timezone.go

type GeoNamesTimezone

type GeoNamesTimezone struct {
    Time        string  `bson:"time"`        // The local current time.
    CountryName string  `bson:"countryName"` // ISO 3166 country code name.
    CountryCode string  `bson:"countryCode"` // ISO 3166 country code.
    Sunset      string  `bson:"sunset"`      // Current days time for sunset.
    RawOffset   float64 `bson:"rawOffset"`   // The amount of time in hours to add to UTC to get standard time in this time zone.
    DstOffset   float64 `bson:"dstOffset"`   // Offset to GMT at 1. July (deprecated).
    GmtOffset   float64 `bson:"gmtOffset"`   // Offset to GMT at 1. January (deprecated).
    Sunrise     string  `bson:"sunrise"`     // Current days time for sunrise.
    TimezoneID  string  `bson:"timezoneID"`  // The name of the timezone (according to olson).
    Longitude   float64 `bson:"lng"`         // Longitude used for the call.
    Latitude    float64 `bson:"lat"`         // Latitude used for the call.
}

GeoNamesTimezone is the repsonse from the GeoNames timezone API.

func RetrieveGeoNamesTimezone

func RetrieveGeoNamesTimezone(latitude float64, longitude float64, userName string) (geoNamesTimezone *GeoNamesTimezone, err error)

RetrieveGeoNamesTimezone calls the GeoNames API to retrieve the timezone for the lat/lng.

type GoogleTimezone

type GoogleTimezone struct {
    DstOffset    float64 `bson:"dstOffset"`    // Offset for daylight-savings time in seconds. This will be zero if the time zone is not in Daylight Savings Time during the specified timestamp.
    RawOffset    float64 `bson:"rawOffset"`    // Offset from UTC (in seconds) for the given location. This does not take into effect daylight savings.
    Status       string  `bson:"status"`       // Indicates the status of the response.
    TimezoneID   string  `bson:"timeZoneID"`   // Contains the ID of the time zone, such as "America/Los_Angeles" or "Australia/Sydney".
    TimezoneName string  `bson:"timeZoneName"` // Contains the long form name of the time zone. This field will be localized if the language parameter is set. eg. "Pacific Daylight Time" or "Australian Eastern Daylight Time"
}

GoogleTimezone is the repsonse from the Google timezone API.

func RetrieveGoogleTimezone

func RetrieveGoogleTimezone(latitude float64, longitude float64) (googleTimezone *GoogleTimezone, err error)

RetrieveGoogleTimezone calls the Google API to retrieve the timezone for the lat/lng.


Generated by godoc2md

FAQs

Last updated on 15 Aug 2019

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc