tz
Un package Go léger pour les opérations de fuseaux horaires
Installation
$ go get packages.infobits.io/go/tztz
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éthode | Type de retour | Description |
|---|---|---|
Identifier() | string | Identifiant de fuseau horaire IANA |
CountryCode() | string | Code pays ISO 3166-1 alpha-2 |
CountryCodes() | []string | Tous les codes pays associés |
UtcOffset() | float32 | Dé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.