24/100 Dias de Golang - Continuação sobre a biblioteca “time”
Table of Contents
#
Continuação sobre a biblioteca “time”
No post “22/100 Dias de Golang - Biblioteca ’time’” , foram abordadas funcionalidades básicas da biblioteca time do Go, como obter o horário atual, acessar componentes individuais da data e formatar datas. Vamos aprofundar esses conceitos e explorar recursos mais avançados da biblioteca
#
Fusos Horários
No Go, o pacote time permite converter entre fusos horários utilizando o tipo Location
package main
import (
"fmt"
"time"
)
func main() {
now := time.Now()
fmt.Println("Horário local:", now)
locNY, err := time.LoadLocation("America/New_York")
if err != nil {
fmt.Println("Erro ao carregar localização:", err)
return
}
timeInNY := now.In(locNY)
fmt.Println("Horário em Nova York:", timeInNY)
}
Neste exemplo, carregamos a localização para “America/New_York” e convertemos o horário atual para esse fuso. A função LoadLocation utiliza os nomes de fusos horários da base de dados IANA Time Zone.
#
Temporizadores e Tickers
A biblioteca time fornece mecanismos para executar ações após um determinado período ou em intervalos regulares. Um temporizador dispara um evento após uma duração especificada.
timer := time.NewTimer(5 * time.Second)
<-timer.C
fmt.Println("5 segundos se passaram")
Um iicker dispara eventos em intervalos regulares.
ticker := time.NewTicker(2 * time.Second)
defer ticker.Stop()
for t := range ticker.C {
fmt.Println("Tick em", t)
}
#
Comparando Datas
Para determinar a ordem temporal entre duas datas, utilizamos os métodos Before, After e Equal.
data1 := time.Date(2025, 4, 5, 10, 0, 0, 0, time.UTC)
data2 := time.Date(2025, 4, 5, 15, 0, 0, 0, time.UTC)
fmt.Println("data1 é antes de data2?", data1.Before(data2))
fmt.Println("data1 é depois de data2?", data1.After(data2))
fmt.Println("data1 é igual a data2?", data1.Equal(data2))