Trabalho com datas em Go (Golang): visão geral de bibliotecas e pacotes

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Trabalho com datas em Go (Golang): visão completa das bibliotecas



Trabalhar com datas e horas é uma das tarefas mais comuns no desenvolvimento web, análise e backend. Em Go (Golang), a biblioteca padrão time fornece um conjunto de ferramentas poderoso, mas nem sempre intuitivo. Para simplificar o desenvolvimento, existem várias bibliotecas de terceiros. Neste artigo, vamos detalhar as principais abordagens e bibliotecas populares para trabalhar com datas em Go.



1. Pacote padrão time



O pacote time é a base para trabalhar com datas e horas em Go. Ele inclui os tipos Time, Duration, Location e funções para formatação, parsing e aritmética.



Principais funcionalidades:

  • Hora atual: time.Now()
  • Formatação: método .Format(layout string) — usa o formato de referência especial Mon Jan 2 15:04:05 MST 2006 (Go nasceu em 2006).
  • Parsing: função time.Parse(layout, value string).
  • Aritmética: métodos .Add(d Duration), .Sub(t Time), .AddDate(y, m, d int).
  • Fusos horários: time.LoadLocation(name string) e método .In(loc *Location).


package main

import ( "fmt" "time")

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

// Formatação fmt.Println("Formato RFC3339:", now.Format(time.RFC3339)) fmt.Println("Formato personalizado:", now.Format("02.01.2006 15:04:05"))

// Parsing de string parsed, _ := time.Parse("2006-01-02", "2024-03-15") fmt.Println("Parseado:", parsed)

// Trabalho com fusos horários loc, _ := time.LoadLocation("Europe/Moscow") moscowTime := now.In(loc) fmt.Println("Horário em Moscou:", moscowTime)

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


Particularidade: Go usa um formato de referência único (2006-01-02T15:04:05Z07:00), em vez do habitual YYYY-MM-DD. Isso exige adaptação, mas elimina ambiguidades.



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



A biblioteca carbon é uma adaptação da popular biblioteca PHP Carbon. Ela fornece uma interface fluente conveniente para trabalhar com datas.



Instalação:

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


Exemplos de uso:

package main

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

func main() { // Data atual now := carbon.Now() fmt.Println("Agora:", now.ToDateTimeString())

// Criação de data date := carbon.CreateFromDate(2024, 3, 15) fmt.Println("Data:", date.ToDateString())

// Diferença entre datas start := carbon.Parse("2024-01-01") end := carbon.Parse("2024-03-15") diff := start.DiffInDays(end) fmt.Printf("Dias entre: %d", diff)

// Formatos legíveis fmt.Println("Ontem:", carbon.Yesterday().ToDateString()) fmt.Println("Amanhã:", carbon.Tomorrow().ToDateString())

// Verificações fmt.Println("Agora é fim de semana?", now.IsWeekend()) fmt.Println("Agora é manhã?", now.IsMorning())}


Vantagens: API simples, suporte a caracteres chineses, localização, métodos para trabalhar com início/fim do dia, semana, mês.



3. Biblioteca now (ferramenta minimalista)



A biblioteca now do autor do GORM é uma ferramenta leve para calcular o início e o fim de períodos de tempo.



Inst

Recommendations