Pular para o conteúdo principal

victorstein.dev

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))