// // DISCLAIMER // // Copyright 2016-2022 ArangoDB GmbH, Cologne, Germany // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // // Copyright holder is ArangoDB GmbH, Cologne, Germany // package timezones import ( "time" "encoding/base64" ) type Timezone struct { Name string Offset time.Duration Zone string Parent string } func (t Timezone) GetData() ([]byte, bool) { if d, ok := timezonesData[t.Parent]; ok { if d, err := base64.StdEncoding.DecodeString(d); err == nil { return d, true } } return nil, false } func GetZoneTimezone(zone string) (string, bool) { for tz, v := range timezones { if v.Zone == zone { return tz, true } } return "", false } func GetTimezone(timezone string) (Timezone, bool) { v, ok := timezones[timezone] return v, ok } var timezonesData = map[string]string{ {{- range .timezoneDatas }} "{{ .Name }}": "{{ .Data }}", {{- end }} } var timezones = map[string]Timezone{ {{- range .timezones }} "{{ .Name }}": { Name: "{{ .Name }}", Offset: {{ .Offset }} * time.Minute, Zone: "{{ .Zone }}", Parent: "{{ .Parent }}" }, {{- end }} }