tz

Go
BSD-3-Clause

En letvægts Go-pakke til tidszoneoperationer

Installation

$ go get packages.infobits.io/go/tz

tz

CI Go Reference

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

MetodeReturtypeBeskrivelse
Identifier()stringIANA-tidszoneidentifikator
CountryCode()stringISO 3166-1 alpha-2 landekode
CountryCodes()[]stringAlle tilknyttede landekoder
UtcOffset()float32Standard 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.

Licens

BSD 3-Clause