Go Academy · Lección

Zonas horarias

Trabaje con ubicaciones

Lección 4 de 413 pasos

Zonas horarias es una lección gratuita de Go Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Go Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Go Academy incluye 4 lecciones en total.

El tiempo incluye una zona horaria

Cada time.Time tiene una ubicación asociada (zona horaria). El mismo instante puede mostrarse de forma diferente según la zona.

package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.Date(2026, 5, 30, 12, 0, 0, 0, time.UTC)
    fmt.Println(t.Location())
}

UTC y Local

Hay dos ubicaciones integradas que siempre están disponibles:

  • time.UTC para el tiempo universal coordinado.
  • time.Local para la zona local de la máquina.
package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.Date(2026, 5, 30, 12, 0, 0, 0, time.UTC)
    fmt.Println(t.UTC().Hour())
}

Cargar una zona con nombre

time.LoadLocation(name) busca una zona IANA, como "Europe/Istanbul" o "America/New_York".

package main

import (
    "fmt"
    "time"
)

func main() {
    loc, err := time.LoadLocation("UTC")
    fmt.Println(loc, err)
}

Convertir zonas con In

t.In(loc) devuelve el mismo instante mostrado en una zona diferente. El momento subyacente no cambia; solo cambia su presentación.

package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.Date(2026, 5, 30, 12, 0, 0, 0, time.UTC)
    fmt.Println(t.In(time.UTC).Hour())
}

Mismo instante, relojes diferentes

El mediodía UTC es un único instante, pero un observador en otra zona ve una hora diferente en su reloj. La diferencia obtenida con Sub entre ambos es cero.

package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.Date(2026, 5, 30, 12, 0, 0, 0, time.UTC)
    u := t.UTC()
    fmt.Println(t.Sub(u))
}

Crear tiempo en una zona

Pase una ubicación como último argumento de time.Date para crear un valor de tiempo directamente en esa zona.

package main

import (
    "fmt"
    "time"
)

func main() {
    loc, _ := time.LoadLocation("UTC")
    t := time.Date(2026, 5, 30, 9, 0, 0, 0, loc)
    fmt.Println(t.Hour())
}

Leer el desfase de la zona

t.Zone() devuelve la abreviatura de la zona y su desfase respecto a UTC en segundos.

package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.Date(2026, 5, 30, 12, 0, 0, 0, time.UTC)
    name, offset := t.Zone()
    fmt.Println(name, offset)
}

Zonas fijas

Cuando no necesita todas las reglas de IANA, time.FixedZone(name, offsetSeconds) crea una zona sencilla con un desfase constante.

package main

import (
    "fmt"
    "time"
)

func main() {
    loc := time.FixedZone("GMT+3", 3*3600)
    t := time.Date(2026, 5, 30, 12, 0, 0, 0, loc)
    name, off := t.Zone()
    fmt.Println(name, off)
}

Dar formato en distintas zonas

Convierta el valor con In antes de darle formato para mostrar una marca de tiempo en la zona del lector.

package main

import (
    "fmt"
    "time"
)

func main() {
    loc := time.FixedZone("GMT+3", 3*3600)
    t := time.Date(2026, 5, 30, 12, 0, 0, 0, time.UTC)
    fmt.Println(t.In(loc).Format("15:04 MST"))
}

Almacenar en UTC y mostrar en local

Una regla muy utilizada es la siguiente: almacene y realice los cálculos en UTC, y convierta a una zona local solo al mostrar las horas a los usuarios. Así evitará ambigüedades.

package main

import (
    "fmt"
    "time"
)

func main() {
    stored := time.Date(2026, 5, 30, 9, 0, 0, 0, time.UTC)
    loc := time.FixedZone("GMT+2", 2*3600)
    fmt.Println("shown:", stored.In(loc).Hour())
}

Gestionar errores de carga

LoadLocation puede fallar si falta la base de datos de zonas o si el nombre es desconocido. Compruebe siempre el error.

package main

import (
    "fmt"
    "time"
)

func main() {
    _, err := time.LoadLocation("Mars/Olympus")
    if err != nil {
        fmt.Println("unknown zone")
    }
}

Comprobación rápida

¿Qué cambia t.In(loc)?

Repaso: zonas horarias

Ha aprendido a trabajar con ubicaciones:

  • Cada valor de tiempo tiene una ubicación; UTC y Local están integradas.
  • Cargue zonas con nombre mediante LoadLocation o cree desfases con FixedZone.
  • Convierta con In; almacene en UTC y muestre en la zona local.
package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.Date(2026, 5, 30, 15, 0, 0, 0, time.UTC)
    loc := time.FixedZone("GMT-5", -5*3600)
    fmt.Println(t.In(loc).Format("15:04 MST"))
}
Gratis para empezar

Aprende Go con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
51
Lecciones
203

Preguntas frecuentes

¿La lección «Zonas horarias» es gratis?

Sí — el texto completo de «Zonas horarias» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Go Academy, actualiza a CoddyKit PRO. El curso de Go Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Zonas horarias»?

Trabaje con ubicaciones Practicas Go Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Go Academy?

No se requiere experiencia previa. Go Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Zonas horarias»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Go Academy?

Sí. Cada lección de Go Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Tiempo y duración
  2. Formato y análisis
  3. Temporizadores y tickers
  4. Zonas horarias
← Volver a Go Academy