tz
En letvægts Go-pakke til tidszoneoperationer
Installation
$ go get packages.infobits.io/go/tztz
En letvægts Go-pakke der mapper IANA-tidszoneidentifikatorer til landekoder og UTC-forskydninger. Ingen afhængigheder, 400+ tidszoner.
Installation
go get github.com/infobits-io/tz
Brug
package main
import (
"fmt"
"log"
"github.com/infobits-io/tz"
)
func main() {
timezone, err := tz.Decode("Europe/Berlin")
if err != nil {
log.Fatal(err)
}
fmt.Println(timezone.Identifier()) // Europe/Berlin
fmt.Println(timezone.CountryCode()) // DE
fmt.Println(timezone.UtcOffset()) // 1
}
Omvendte opslag
// Find alle tidszoner i et land.
zones := tz.ByCountryCode("US")
for _, z := range zones {
fmt.Printf("%s (UTC%+g)\n", z.Identifier(), z.UtcOffset())
}
// Find alle tidszoner med en given UTC-forskydning.
zones = tz.ByUtcOffset(5.5)
for _, z := range zones {
fmt.Printf("%s (%s)\n", z.Identifier(), z.CountryCode())
}
Validering og optælling
// Kontrollér om en tidszoneidentifikator er genkendt.
if tz.IsValid("Asia/Tokyo") {
fmt.Println("valid")
}
// Hent alle understøttede tidszoneidentifikatorer (sorteret).
all := tz.All()
fmt.Printf("%d timezones supported\n", len(all))
// Detektér systemets aktuelle tidszone.
current, err := tz.Current()
if err == nil {
fmt.Printf("System timezone: %s\n", current.Identifier())
}
API
Decode(identifier string) (Timezone, error)
Slår en tidszone op efter dens IANA-identifikator og returnerer en Timezone-værdi, eller en fejl der indkapsler ErrNotFound hvis identifikatoren ikke genkendes.
IsValid(identifier string) bool
Rapporterer om den givne identifikator er en genkendt tidszone.
All() []string
Returnerer en sorteret slice af alle understøttede IANA-tidszoneidentifikatorer.
ByCountryCode(code string) []Timezone
Returnerer alle tidszoner for den givne ISO 3166-1 alpha-2 landekode, sorteret efter identifikator.
ByUtcOffset(offset float32) []Timezone
Returnerer alle tidszoner med den givne standard UTC-forskydning i timer, sorteret efter identifikator.
Current() (Timezone, error)
Returnerer tidszonen for systemets aktuelle placering.
Timezone-metoder
| Metode | Returtype | Beskrivelse |
|---|---|---|
Identifier() | string | IANA-tidszoneidentifikator |
CountryCode() | string | ISO 3166-1 alpha-2 landekode |
CountryCodes() | []string | Alle tilknyttede landekoder |
UtcOffset() | float32 | Standard UTC-forskydning i timer |
Sentinelfejl
var ErrNotFound = errors.New("timezone not found")
Brug errors.Is(err, tz.ErrNotFound) til at kontrollere for ukendte tidszoneidentifikatorer.
Bemærk: UTC-forskydninger repræsenterer kun standardtid. Sommertidsjusteringer afspejles ikke.
Understøttede tidszoner
Dækker 400+ IANA-tidszoner på tværs af alle regioner: Afrika, Amerika, Antarktis, Asien, Atlanterhavet, Australien, Europa, Det Indiske Ocean og Stillehavet. Se data.go for den fulde liste.