tz

Go
BSD-3-Clause

Un pacchetto Go leggero per le operazioni sui fusi orari

Installazione

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

tz

CI Go Reference

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

MetodoTipo di ritornoDescrizione
Identifier()stringIdentificatore di fuso orario IANA
CountryCode()stringCodice paese ISO 3166-1 alfa-2
CountryCodes()[]stringTutti i codici paese associati
UtcOffset()float32Offset 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.

Licenza

BSD 3-Clause