tz
Un pacchetto Go leggero per le operazioni sui fusi orari
Installazione
$ go get packages.infobits.io/go/tztz
Un pacchetto Go leggero che mappa gli identificatori di fuso orario IANA ai codici paese e agli offset UTC. Nessuna dipendenza, oltre 400 fusi orari.
Installazione
go get github.com/infobits-io/tz
Utilizzo
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
}
Ricerche inverse
// Trovare tutti i fusi orari di un paese.
zones := tz.ByCountryCode("US")
for _, z := range zones {
fmt.Printf("%s (UTC%+g)\n", z.Identifier(), z.UtcOffset())
}
// Trovare tutti i fusi orari con un dato offset UTC.
zones = tz.ByUtcOffset(5.5)
for _, z := range zones {
fmt.Printf("%s (%s)\n", z.Identifier(), z.CountryCode())
}
Validazione ed enumerazione
// Verificare se un identificatore di fuso orario è riconosciuto.
if tz.IsValid("Asia/Tokyo") {
fmt.Println("valid")
}
// Ottenere tutti gli identificatori di fuso orario supportati (ordinati).
all := tz.All()
fmt.Printf("%d timezones supported\n", len(all))
// Rilevare il fuso orario corrente del sistema.
current, err := tz.Current()
if err == nil {
fmt.Printf("System timezone: %s\n", current.Identifier())
}
API
Decode(identifier string) (Timezone, error)
Cerca un fuso orario tramite il suo identificatore IANA e restituisce un valore Timezone, oppure un errore che incapsula ErrNotFound se l'identificatore non è riconosciuto.
IsValid(identifier string) bool
Indica se l'identificatore dato è un fuso orario riconosciuto.
All() []string
Restituisce uno slice ordinato di tutti gli identificatori di fuso orario IANA supportati.
ByCountryCode(code string) []Timezone
Restituisce tutti i fusi orari per il codice paese ISO 3166-1 alfa-2 dato, ordinati per identificatore.
ByUtcOffset(offset float32) []Timezone
Restituisce tutti i fusi orari con l'offset UTC standard dato in ore, ordinati per identificatore.
Current() (Timezone, error)
Restituisce il fuso orario della posizione corrente del sistema.
Metodi di Timezone
| Metodo | Tipo di ritorno | Descrizione |
|---|---|---|
Identifier() | string | Identificatore di fuso orario IANA |
CountryCode() | string | Codice paese ISO 3166-1 alfa-2 |
CountryCodes() | []string | Tutti i codici paese associati |
UtcOffset() | float32 | Offset UTC standard in ore |
Errore sentinella
var ErrNotFound = errors.New("timezone not found")
Usare errors.Is(err, tz.ErrNotFound) per verificare identificatori di fuso orario sconosciuti.
Nota: Gli offset UTC rappresentano solo l'ora standard. Le regolazioni per l'ora legale non sono riflesse.
Fusi orari supportati
Copre oltre 400 fusi orari IANA in tutte le regioni: Africa, Americhe, Antartide, Asia, Atlantico, Australia, Europa, Oceano Indiano e Pacifico. Vedere data.go per l'elenco completo.