Lectores como tú ayudan a apoyar a MUO. Cuando realiza una compra utilizando enlaces en nuestro sitio, podemos ganar una comisión de afiliado. Leer más.

Las zonas horarias son cruciales para cualquier aplicación que trate con fechas y horas. Por supuesto, esto es especialmente cierto para las aplicaciones que sirven a los usuarios en todos los continentes y ubicaciones. Las zonas horarias determinan el desplazamiento de la hora universal coordinada (UTC) para ubicaciones específicas en todo el mundo. Desempeñan un papel vital para garantizar un manejo del tiempo preciso y confiable.

Go proporciona el paquete de tiempo en su biblioteca estándar para trabajar con la hora y las zonas horarias. Puede buscar y convertir zonas horarias en varios lugares utilizando el paquete de tiempo.

El paquete del tiempo

El tiempo paquete proporciona funcionalidad para trabajar con horas y fechas, medir y mostrar el tiempo, y manipular fechas utilizando un calendario gregoriano sin segundos bisiestos.

El paquete de tiempo proporciona una

instagram viewer
Tiempotipo de estructura que contiene el campo de ubicación que puede usar para establecer zonas horarias.

Puede importar el paquete de tiempo con una declaración de importación.

importar"tiempo"

Aquí está el tipo de estructura de tiempo y sus campos. Los campos no se exportan, por lo que no aparecen en la documentación oficial.

paquete principal

tipo Tiempo estructura {
// wall es el tiempo de pared en el formato devuelto por runtime.nanotime()
// función.
muro uint64

// ext es la lectura monotónica del reloj en el formato devuelto por
// tiempo de ejecución.nanotiempo().
extensión int64

// loc es un puntero a la estructura de ubicación asociada con esta hora.
loc *Ubicación
}

tipo Ubicación estructura {
// nombre es el nombre de la zona horaria, como "UTC" o "PST".
nombre cadena

// zona contiene información sobre la abreviatura de zona horaria, desplazamiento,
// y regla para una única zona horaria en la ubicación.
zona []zona

// tx contiene información sobre cuando la abreviatura de zona horaria o
// compensar cambios para una ubicación.
tx []zoneTrans

// extender contiene el nombre de una zona horaria principal si esta ubicación
// se extiende desde otro.
extender cadena

// cacheStart y cacheEnd son marcas de tiempo de Unix que definen el rango
// para el cual el campo cacheZone es válido.
cacheStart int64
cacheEnd int64

// cacheZone apunta a la zona que actualmente es válida para el tiempo
// rango definido por cacheStart y cacheEnd.
cacheZone *zona
}

Muchos métodos utilizan el Tiempo y Ubicación estructuras, incluidos los métodos de zona horaria.

Cargando información de zona horaria

La carga de información de zona horaria es una de las operaciones básicas cuando se trabaja con zonas horarias. El Cargar ubicación El método proporciona funcionalidad para cargar información de zona horaria desde el Base de datos de zonas horarias de la IANA. El Cargar ubicación El método toma el nombre de la zona horaria y devuelve la información de ubicación y un error para el manejo. Una vez que ha cargado la información de la zona horaria, crea una tiempo Instancia de estructura asociada con la zona horaria.

importar (
"fmt"
"tiempo"
)

funciónprincipal() {
// Cargue la ubicación de la zona horaria para América/Nueva_York
loc, err := tiempo. CargarUbicación("América/Nueva_York")

si error! = nulo {
fmt. imprimir("Error al cargar la ubicación:", errar)
devolver
}

// Obtener la hora actual en una ubicación
ahora := tiempo. Ahora().En (ubicación)
fmt. imprimir("Hora actual en Nueva York:", ahora)
}

El En metodo de la Ahora La función toma una ubicación e imprime la hora allí:

Además, puede utilizar el Zona fija método para cargar la hora actual en una ubicación si conoce la cadena de ubicación y el desplazamiento de la zona horaria de UTC. Primero, deberá cargar la hora actual en UTC, y luego usará el método FixedZone para cargar el ubicación basada en la cadena y el desplazamiento antes de pasar la ubicación al En el método del tiempo instancia.

importar (
"fmt"
"tiempo"
)

funciónprincipal() {
// Obtener la hora actual en UTC
ahora := tiempo. Ahora().UTC()

// Establecer la zona horaria de Lagos
lagos := ahora. A tiempo. Zona fija ("QUÉ", 3600))

// Imprime la hora actual en ambas ubicaciones
fmt. imprimir("Hora actual en Lagos:", lagos)
}

El principal La función imprime la hora actual en Lagos en la consola.

Medición de la duración de la zona horaria

El paquete de tiempo proporciona la Zona método para recuperar la abreviatura y el desplazamiento de la zona horaria asociada con un tiempo. Tiempo valor. El método Zone devuelve la cadena que representa la abreviatura de la zona horaria (por ejemplo, "EST" para "America/New_York") y un número entero que representa la cantidad de segundos al este del UTC.

importar (
"fmt"
"tiempo"
)

funciónprincipal() {
// Cargue la ubicación de la zona horaria para América/Nueva_York
loc, err := tiempo. CargarUbicación("América/Nueva_York")

si error! = nulo {
fmt. imprimir("Error al cargar la ubicación:", errar)
devolver
}

// Obtener la hora actual en UTC y la ubicación especificada
t1 := tiempo. Ahora()
t2 := t1.In (loc)

// Obtenga el desplazamiento en segundos para cada zona horaria
//para las zonas horarias
_, desplazamiento1 := t1.Zona()
_, desplazamiento2 := t2.Zona()

// Calcular la duración del cambio de zona horaria
// entre UTC y América/Nueva_York
duración := desplazamiento2 - desplazamiento1

fmt. imprimirf("La duración del cambio de zona horaria" +
"entre UTC y Nueva York es: %d segundos", duración)
}

En la función principal, el método Zone mide la duración del cambio de zona horaria entre dos zonas horarias (time. valores de tiempo). El t1 variable es la hora actual en UTC, y la t2 la variable es la hora actual en la zona horaria "America/New_York".

La función imprime el duración variable (la diferencia de desplazamiento entre las zonas horarias) que representa el cambio de zona horaria en segundos.

Evaluación del tiempo entre zonas horarias

Puede evaluar el tiempo entre zonas horarias si conoce la duración entre las zonas horarias. Puedes usar el Agregar método del método In de su tiempo. Instancia de estructura de tiempo para agregar una duración a la hora en una zona horaria.

importar (
"registro"
"tiempo"// importa el paquete de tiempo
)

funciónevaluarTiempo(tiempo t. Tiempo, tiempo de duración. Duración)tiempo.Tiempo {
// carga la ubicación para Africa/Lagos
ubicación, err := tiempo. CargarUbicación("África/Lagos")

si error! = nulo {
registro. imprimir("Hubo un error al cargar la ubicación")
}

devolver t. En (ubicación). Agregar (duración)
}

El evaluarTiempo función toma en un tiempo. Instancia de tiempo y una duración de tipo tiempo. Duración, devolviendo la hora en la zona horaria. Carga la hora actual en "África/Lagos" y añade una duración a la hora.

Manipular hora y fecha con el paquete de tiempo

El paquete de tiempo es muy versátil para trabajar tanto con horas como con fechas. El paquete de tiempo proporciona funciones como Unix() para convertir el tiempo a tiempo Unix, Sleep() para pausar rutinas y Format() para formatear valores de tiempo en cadenas.