tz
Ein leichtgewichtiges Go-Paket für Zeitzonen-Operationen
Installation
$ go get packages.infobits.io/go/tztz
Ein leichtgewichtiges Go-Paket, das IANA-Zeitzonen-Identifikatoren auf Ländercodes und UTC-Offsets abbildet. Keine Abhängigkeiten, 400+ Zeitzonen.
Installation
go get github.com/infobits-io/tz
Verwendung
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
}
Umgekehrte Abfragen
// Alle Zeitzonen in einem Land finden.
zones := tz.ByCountryCode("US")
for _, z := range zones {
fmt.Printf("%s (UTC%+g)\n", z.Identifier(), z.UtcOffset())
}
// Alle Zeitzonen mit einem bestimmten UTC-Offset finden.
zones = tz.ByUtcOffset(5.5)
for _, z := range zones {
fmt.Printf("%s (%s)\n", z.Identifier(), z.CountryCode())
}
Validierung und Aufzählung
// Prüfen, ob ein Zeitzonen-Identifikator erkannt wird.
if tz.IsValid("Asia/Tokyo") {
fmt.Println("valid")
}
// Alle unterstützten Zeitzonen-Identifikatoren abrufen (sortiert).
all := tz.All()
fmt.Printf("%d timezones supported\n", len(all))
// Die aktuelle Zeitzone des Systems ermitteln.
current, err := tz.Current()
if err == nil {
fmt.Printf("System timezone: %s\n", current.Identifier())
}
API
Decode(identifier string) (Timezone, error)
Sucht eine Zeitzone anhand ihres IANA-Identifikators und gibt einen Timezone-Wert zurück, oder einen Fehler, der ErrNotFound umschließt, wenn der Identifikator nicht erkannt wird.
IsValid(identifier string) bool
Gibt an, ob der angegebene Identifikator eine erkannte Zeitzone ist.
All() []string
Gibt eine sortierte Slice aller unterstützten IANA-Zeitzonen-Identifikatoren zurück.
ByCountryCode(code string) []Timezone
Gibt alle Zeitzonen für den angegebenen ISO 3166-1 Alpha-2-Ländercode zurück, sortiert nach Identifikator.
ByUtcOffset(offset float32) []Timezone
Gibt alle Zeitzonen mit dem angegebenen Standard-UTC-Offset in Stunden zurück, sortiert nach Identifikator.
Current() (Timezone, error)
Gibt die Zeitzone für den aktuellen Standort des Systems zurück.
Timezone-Methoden
| Methode | Rückgabetyp | Beschreibung |
|---|---|---|
Identifier() | string | IANA-Zeitzonen-Identifikator |
CountryCode() | string | ISO 3166-1 Alpha-2-Ländercode |
CountryCodes() | []string | Alle zugehörigen Ländercodes |
UtcOffset() | float32 | Standard-UTC-Offset in Stunden |
Sentinel-Fehler
var ErrNotFound = errors.New("timezone not found")
Verwenden Sie errors.Is(err, tz.ErrNotFound), um nach unbekannten Zeitzonen-Identifikatoren zu prüfen.
Hinweis: UTC-Offsets repräsentieren nur die Standardzeit. Sommerzeitanpassungen werden nicht berücksichtigt.
Unterstützte Zeitzonen
Umfasst 400+ IANA-Zeitzonen in allen Regionen: Afrika, Amerika, Antarktis, Asien, Atlantik, Australien, Europa, Indischer Ozean und Pazifik. Siehe data.go für die vollständige Liste.