tz
Un paquete ligero de Go para operaciones de zona horaria
Instalación
$ go get packages.infobits.io/go/tztz
Un paquete ligero de Go que mapea identificadores de zona horaria IANA a códigos de país y desfases UTC. Sin dependencias, más de 400 zonas horarias.
Instalación
go get github.com/infobits-io/tz
Uso
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
}
Búsquedas inversas
// Encontrar todas las zonas horarias de un país.
zones := tz.ByCountryCode("US")
for _, z := range zones {
fmt.Printf("%s (UTC%+g)\n", z.Identifier(), z.UtcOffset())
}
// Encontrar todas las zonas horarias con un desfase UTC dado.
zones = tz.ByUtcOffset(5.5)
for _, z := range zones {
fmt.Printf("%s (%s)\n", z.Identifier(), z.CountryCode())
}
Validación y enumeración
// Comprobar si un identificador de zona horaria es reconocido.
if tz.IsValid("Asia/Tokyo") {
fmt.Println("valid")
}
// Obtener todos los identificadores de zona horaria soportados (ordenados).
all := tz.All()
fmt.Printf("%d timezones supported\n", len(all))
// Detectar la zona horaria actual del sistema.
current, err := tz.Current()
if err == nil {
fmt.Printf("System timezone: %s\n", current.Identifier())
}
API
Decode(identifier string) (Timezone, error)
Busca una zona horaria por su identificador IANA y devuelve un valor Timezone, o un error que envuelve ErrNotFound si el identificador no es reconocido.
IsValid(identifier string) bool
Indica si el identificador dado es una zona horaria reconocida.
All() []string
Devuelve un slice ordenado de todos los identificadores de zona horaria IANA soportados.
ByCountryCode(code string) []Timezone
Devuelve todas las zonas horarias para el código de país ISO 3166-1 alfa-2 dado, ordenadas por identificador.
ByUtcOffset(offset float32) []Timezone
Devuelve todas las zonas horarias con el desfase UTC estándar dado en horas, ordenadas por identificador.
Current() (Timezone, error)
Devuelve la zona horaria de la ubicación actual del sistema.
Métodos de Timezone
| Método | Tipo de retorno | Descripción |
|---|---|---|
Identifier() | string | Identificador de zona horaria IANA |
CountryCode() | string | Código de país ISO 3166-1 alfa-2 |
CountryCodes() | []string | Todos los códigos de país asociados |
UtcOffset() | float32 | Desfase UTC estándar en horas |
Error centinela
var ErrNotFound = errors.New("timezone not found")
Use errors.Is(err, tz.ErrNotFound) para verificar identificadores de zona horaria desconocidos.
Nota: Los desfases UTC representan solo la hora estándar. Los ajustes por horario de verano no se reflejan.
Zonas horarias soportadas
Cubre más de 400 zonas horarias IANA en todas las regiones: África, América, Antártida, Asia, Atlántico, Australia, Europa, Océano Índico y Pacífico. Consulte data.go para la lista completa.