Trabalhando com datas e horas em Go: guia completo

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

Introdução ao trabalho com datas e horas em Go

Trabalhar com datas e horas é uma das tarefas principais em qualquer linguagem de programação. A linguagem Go (Golang) fornece um pacote poderoso e intuitivo chamado time, que permite realizar todas as operações básicas: obter a hora atual, fazer parsing de strings, formatar, calcular diferenças, criar timers e muito mais. Ao contrário de algumas outras linguagens, Go usa um formato de data de referência único, o que torna o código mais legível e previsível. Neste artigo, vamos detalhar as principais funcionalidades do pacote time com exemplos práticos.



Tipos principais e obtenção da hora atual

Tipo time.Time

O tipo central no pacote time é a estrutura time.Time. Ela armazena informações sobre segundos, nanossegundos, fuso horário e um contador monotônico (para medições precisas).



Obtendo o momento atual

Para obter a hora atual, usa-se a função time.Now(). Ela retorna a hora local com base nas configurações do sistema.

package main

import ( "fmt" "time")

func main() { now := time.Now() fmt.Println("Hora atual:", now) fmt.Println("Ano:", now.Year()) fmt.Println("Mês:", now.Month()) fmt.Println("Dia:", now.Day()) fmt.Println("Horas:", now.Hour()) fmt.Println("Minutos:", now.Minute()) fmt.Println("Segundos:", now.Second()) fmt.Println("Nanossegundos:", now.Nanosecond()) fmt.Println("Dia da semana:", now.Weekday())}


Criando uma hora manualmente

Você pode criar um momento específico usando a função time.Date(). Ela recebe ano, mês, dia, hora, minuto, segundo, nanossegundo e fuso horário.

package main

import ( "fmt" "time")

func main() { // 15 de março de 2025, 14:30:00, UTC specificDate := time.Date(2025, time.March, 15, 14, 30, 0, 0, time.UTC) fmt.Println("Data criada:", specificDate)}


Parsing e formatação de datas

Formato de referência do Go

Go usa uma abordagem única para formatação: em vez de códigos como YYYY-MM-DD, usa-se a data de referência Mon Jan 2 15:04:05 MST 2006 (ou abreviadamente 2006-01-02T15:04:05Z07:00). Isso significa que para indicar o ano você escreve 2006, para o mês — 01, para o dia — 02, para a hora — 15 (ou 03 para o formato de 12 horas), para o minuto — 04, para o segundo — 05.



Formatando hora em string

O método Format() converte time.Time em uma string de acordo com o padrão fornecido.

package main

import ( "fmt" "time")

func main() { now := time.Now() fmt.Println("Formato padrão:", now.Format("2006-01-02 15:04:05")) fmt.Println("Formato português:", now.Format("02.01.2006 15:04")) fmt.Println("Apenas data:", now.Format("02 Jan 2006")) fmt.Println("Formato 12 horas:", now.Format("03:04:05 PM"))}


Parsing de string para data

A função time.Parse() converte uma string em time.Time. É importante que a string corresponda ao padrão.

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("Erro de parsing:", err) return } fmt.Println("Hora parseada:", parsedTime) fmt.Println("Dia da semana:", parsedTime.Weekday())}


Parsing com fuso horário

Para strings com fuso horário, use time.ParseInLocation() ou indique o offset no padrão (Z07:00).

package main

import ( "fmt" "tim

Blogs

Book Recommendations