Trabajo con fechas en Go (Golang): revisión de bibliotecas y paquetes

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

Trabajo con fechas en Go (Golang): revisión completa de bibliotecas



Trabajar con fechas y horas es una de las tareas más comunes en el desarrollo web, análisis y backend. En Go (Golang), la biblioteca estándar time proporciona un conjunto de herramientas potente, aunque no siempre intuitivo. Para simplificar el desarrollo, existen numerosas bibliotecas de terceros. En este artículo, analizaremos en detalle los enfoques principales y las bibliotecas populares para trabajar con fechas en Go.



1. Paquete estándar time



El paquete time es la base para trabajar con fechas y horas en Go. Incluye los tipos Time, Duration, Location y funciones para formateo, análisis y aritmética.



Funcionalidades principales:

  • Hora actual: time.Now()
  • Formateo: método .Format(layout string) — utiliza un formato de referencia especial Mon Jan 2 15:04:05 MST 2006 (Go nació en 2006).
  • Análisis: función time.Parse(layout, value string).
  • Aritmética: métodos .Add(d Duration), .Sub(t Time), .AddDate(y, m, d int).
  • Zonas horarias: time.LoadLocation(name string) y método .In(loc *Location).


package main

import ( "fmt" "time")

func main() { // Hora actual now := time.Now() fmt.Println("Ahora:", now)

// Formateo fmt.Println("Formato RFC3339:", now.Format(time.RFC3339)) fmt.Println("Formato personalizado:", now.Format("02.01.2006 15:04:05"))

// Análisis de cadena parsed, _ := time.Parse("2006-01-02", "2024-03-15") fmt.Println("Analizado:", parsed)

// Trabajo con zonas horarias loc, _ := time.LoadLocation("Europe/Moscow") moscowTime := now.In(loc) fmt.Println("Hora en Moscú:", moscowTime)

// Aritmética tomorrow := now.AddDate(0, 0, 1) fmt.Println("Mañana:", tomorrow.Format("02.01.2006"))}


Particularidad: Go utiliza un formato de referencia único (2006-01-02T15:04:05Z07:00), en lugar del habitual YYYY-MM-DD. Esto requiere acostumbrarse, pero elimina ambigüedades.



2. Biblioteca carbon (análoga a Carbon para PHP)



La biblioteca carbon es un puerto de la popular biblioteca PHP Carbon. Proporciona una interfaz fluida y conveniente para trabajar con fechas.



Instalación:

go get github.com/golang-module/carbon/v2


Ejemplos de uso:

package main

import ( "fmt" "github.com/golang-module/carbon/v2")

func main() { // Fecha actual now := carbon.Now() fmt.Println("Ahora:", now.ToDateTimeString())

// Creación de fecha date := carbon.CreateFromDate(2024, 3, 15) fmt.Println("Fecha:", date.ToDateString())

// Diferencia entre fechas start := carbon.Parse("2024-01-01") end := carbon.Parse("2024-03-15") diff := start.DiffInDays(end) fmt.Printf("Días entre: %d", diff)

// Formatos legibles fmt.Println("Ayer:", carbon.Yesterday().ToDateString()) fmt.Println("Mañana:", carbon.Tomorrow().ToDateString())

// Verificaciones fmt.Println("¿Es fin de semana?", now.IsWeekend()) fmt.Println("¿Es mañana?", now.IsMorning())}


Ventajas: API simple, soporte para caracteres chinos, localización, métodos para trabajar con inicio/fin de día, semana, mes.



3. Biblioteca now (herramienta minimalista)



La biblioteca now del autor de GORM es una herramienta ligera para calcular el inicio y el final de períodos de tiempo.



Inst

Recommendations