tz

Go
BSD-3-Clause

Un package Go léger pour les opérations de fuseaux horaires

Installation

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

tz

CI Go Reference

Un package Go léger qui mappe les identifiants de fuseaux horaires IANA vers les codes pays et les décalages UTC. Aucune dépendance, plus de 400 fuseaux horaires.

Installation

go get github.com/infobits-io/tz

Utilisation

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
}

Recherches inversées

// Trouver tous les fuseaux horaires d'un pays.
zones := tz.ByCountryCode("US")
for _, z := range zones {
    fmt.Printf("%s (UTC%+g)\n", z.Identifier(), z.UtcOffset())
}

// Trouver tous les fuseaux horaires avec un décalage UTC donné.
zones = tz.ByUtcOffset(5.5)
for _, z := range zones {
    fmt.Printf("%s (%s)\n", z.Identifier(), z.CountryCode())
}

Validation et énumération

// Vérifier si un identifiant de fuseau horaire est reconnu.
if tz.IsValid("Asia/Tokyo") {
    fmt.Println("valid")
}

// Obtenir tous les identifiants de fuseaux horaires supportés (triés).
all := tz.All()
fmt.Printf("%d timezones supported\n", len(all))

// Détecter le fuseau horaire actuel du système.
current, err := tz.Current()
if err == nil {
    fmt.Printf("System timezone: %s\n", current.Identifier())
}

API

Decode(identifier string) (Timezone, error)

Recherche un fuseau horaire par son identifiant IANA et retourne une valeur Timezone, ou une erreur encapsulant ErrNotFound si l'identifiant n'est pas reconnu.

IsValid(identifier string) bool

Indique si l'identifiant donné est un fuseau horaire reconnu.

All() []string

Retourne un slice trié de tous les identifiants de fuseaux horaires IANA supportés.

ByCountryCode(code string) []Timezone

Retourne tous les fuseaux horaires pour le code pays ISO 3166-1 alpha-2 donné, triés par identifiant.

ByUtcOffset(offset float32) []Timezone

Retourne tous les fuseaux horaires avec le décalage UTC standard donné en heures, triés par identifiant.

Current() (Timezone, error)

Retourne le fuseau horaire de l'emplacement actuel du système.

Méthodes de Timezone

MéthodeType de retourDescription
Identifier()stringIdentifiant de fuseau horaire IANA
CountryCode()stringCode pays ISO 3166-1 alpha-2
CountryCodes()[]stringTous les codes pays associés
UtcOffset()float32Décalage UTC standard en heures

Erreur sentinelle

var ErrNotFound = errors.New("timezone not found")

Utilisez errors.Is(err, tz.ErrNotFound) pour vérifier les identifiants de fuseaux horaires inconnus.

Remarque : Les décalages UTC représentent uniquement l'heure standard. Les ajustements pour l'heure d'été ne sont pas reflétés.

Fuseaux horaires supportés

Couvre plus de 400 fuseaux horaires IANA dans toutes les régions : Afrique, Amériques, Antarctique, Asie, Atlantique, Australie, Europe, Océan Indien et Pacifique. Voir data.go pour la liste complète.

Licence

BSD 3-Clause