Trabajo con fechas y horas en Go: guía completa

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción al trabajo con fechas y horas en Go

Trabajar con fechas y horas es una de las tareas clave en cualquier lenguaje de programación. El lenguaje Go (Golang) proporciona un paquete time potente e intuitivo que permite realizar todas las operaciones básicas: obtener la hora actual, analizar cadenas, formatear, calcular diferencias, crear temporizadores y mucho más. A diferencia de otros lenguajes, Go utiliza un formato de fecha de referencia único, lo que hace que el código sea más legible y predecible. En este artículo, analizaremos en detalle las principales capacidades del paquete time con ejemplos prácticos.



Tipos principales y obtención de la hora actual

Tipo time.Time

El tipo central en el paquete time es la estructura time.Time. Almacena información sobre segundos, nanosegundos, zona horaria y un contador monotónico (para mediciones precisas).



Obtener el momento actual

Para obtener la hora actual se utiliza la función time.Now(). Devuelve la hora local basada en la configuración del sistema.

package main

import ( "fmt" "time")

func main() { now := time.Now() fmt.Println("Hora actual:", now) fmt.Println("Año:", now.Year()) fmt.Println("Mes:", now.Month()) fmt.Println("Día:", now.Day()) fmt.Println("Horas:", now.Hour()) fmt.Println("Minutos:", now.Minute()) fmt.Println("Segundos:", now.Second()) fmt.Println("Nanosegundos:", now.Nanosecond()) fmt.Println("Día de la semana:", now.Weekday())}


Crear una hora manualmente

Puede crear un momento específico con la función time.Date(). Acepta año, mes, día, hora, minuto, segundo, nanosegundo y zona horaria.

package main

import ( "fmt" "time")

func main() { // 15 de marzo de 2025, 14:30:00, UTC specificDate := time.Date(2025, time.March, 15, 14, 30, 0, 0, time.UTC) fmt.Println("Fecha creada:", specificDate)}


Análisis y formateo de fechas

Formato de referencia de Go

Go utiliza un enfoque único para el formateo: en lugar de códigos como YYYY-MM-DD, se utiliza la fecha de referencia Mon Jan 2 15:04:05 MST 2006 (o abreviado 2006-01-02T15:04:05Z07:00). Esto significa que para indicar el año escribe 2006, para el mes — 01, para el día — 02, para la hora — 15 (o 03 para formato de 12 horas), para el minuto — 04, para el segundo — 05.



Formatear hora a cadena

El método Format() convierte time.Time en una cadena según la plantilla dada.

package main

import ( "fmt" "time")

func main() { now := time.Now() fmt.Println("Formato estándar:", now.Format("2006-01-02 15:04:05")) fmt.Println("Formato español:", now.Format("02.01.2006 15:04")) fmt.Println("Solo fecha:", now.Format("02 Jan 2006")) fmt.Println("Formato 12 horas:", now.Format("03:04:05 PM"))}


Analizar una cadena en fecha

La función time.Parse() convierte una cadena en time.Time. Es importante que la cadena coincida con la plantilla.

package main

import ( "fmt" "time")

func main() { dateStr := "2025-03-15 14:30:00" layout := "2006-01-02 15:04:05" parsedTime, err := time.Parse(layout, dateStr) if err != nil { fmt.Println("Error de análisis:", err) return } fmt.Println("Hora analizada:", parsedTime) fmt.Println("Día de la semana:", parsedTime.Weekday())}


Análisis con zona horaria

Para cadenas con zona horaria, use time.ParseInLocation() o indique el desplazamiento en la plantilla (Z07:00).

package main

import ( "fmt" "tim

Blogs

Book Recommendations