Menu
Coddy logo textTech

Obtendo o Horário Atual

Parte da seção Lógica & Fluxo do Journey de GO da Coddy — lição 58 de 68.

Ao trabalhar com datas e horários em seus programas Go, você precisará usar o pacote time integrado do Go. Este pacote fornece toda a funcionalidade necessária para trabalhar com operações relacionadas ao tempo.

O ponto de partida mais comum é obter a hora atual. Go torna isso simples com a função time.Now():

package main

import (
    "fmt"
    "time"
)

func main() {
    now := time.Now()
    fmt.Println(now)
}

A função time.Now() retorna um objeto time.Time que representa o momento atual no tempo. Quando você imprime esse objeto, ele exibe a data e a hora em um formato legível, incluindo as informações de fuso horário.

Este objeto time.Time contém todas as informações sobre aquele momento específico - o ano, mês, dia, hora, minuto, segundo e até nanossegundos. Você usará isso como base para todas as outras operações de tempo em Go.

quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

challenge icon

Desafio

Fácil

Crie um aplicativo de rastreamento de tempo que capture a hora atual e a exiba em vários formatos. Este desafio testará sua habilidade de usar a função time.Now() e trabalhar com objetos time.Time para extrair diferentes componentes do momento atual.

Você receberá uma entrada:

  • Uma string contendo solicitações de formato de exibição separadas por vírgulas no formato "format1,format2,format3" (ex: "full,date,time,year,month,day")

Sua tarefa é:

  1. Usar time.Now() para capturar a hora atual e armazená-la em uma variável
  2. Exibir o cabeçalho do aplicativo: "=== TIME TRACKER APPLICATION ==="
  3. Exibir a confirmação de captura do timestamp: "Current time captured successfully"
  4. Analisar a entrada dividindo-a por vírgulas para obter as solicitações de formato individuais
  5. Exibir o cabeçalho dos formatos: "Displaying time in requested formats:"
  6. Para cada solicitação de formato, exibir as informações de tempo de acordo com o formato especificado:
    • Para "full": Exibir "Full timestamp: [complete_time_object]"
    • Para "date": Exibir "Date only: [year]-[month]-[day]" (use os componentes do método Date())
    • Para "time": Exibir "Time only: [hour]:[minute]:[second]" (use os métodos Hour(), Minute(), Second())
    • Para "year": Exibir "Year: [year_value]" (use o método Year())
    • Para "month": Exibir "Month: [month_name]" (use o método Month())
    • Para "day": Exibir "Day: [day_value]" (use o método Day())
    • Para "weekday": Exibir "Weekday: [weekday_name]" (use o método Weekday())
    • Para "unix": Exibir "Unix timestamp: [unix_seconds]" (use o método Unix())
  7. Contar e exibir estatísticas:
    • "=== TIME INFORMATION SUMMARY ==="
    • "Total formats displayed: [number_of_formats]"
    • "Timestamp components extracted: [number_of_unique_components]"
  8. Exibir detalhes de tempo adicionais:
    • "Additional time details:"
    • "- Nanoseconds: [nanosecond_value]" (use o método Nanosecond())
    • "- Location: [timezone_location]" (use o método Location())
    • "- Is zero time: [true_or_false]" (use o método IsZero())
  9. Exibir a mensagem de conclusão: "Time tracking completed - all requested formats processed"

Use o pacote time para trabalhar com objetos de tempo, o pacote strings para dividir a string de entrada e o pacote fmt para saída formatada. Lembre-se de que time.Now() retorna um objeto time.Time que contém todas as informações sobre o momento atual, e você pode extrair componentes específicos usando os vários métodos disponíveis neste objeto. Este desafio demonstra como capturar a hora atual e extrair diferentes partes de informação de um único objeto time.Time.

Folha de consulta

Para trabalhar com datas e horas em Go, importe o pacote time:

import "time"

Obtenha a hora atual usando time.Now():

now := time.Now()
fmt.Println(now)

A função time.Now() retorna um objeto time.Time representando o momento atual, incluindo ano, mês, dia, hora, minuto, segundo, nanossegundos e informações de fuso horário.

Extraia componentes específicos de um objeto time.Time usando métodos:

now := time.Now()
year := now.Year()
month := now.Month()
day := now.Day()
hour := now.Hour()
minute := now.Minute()
second := now.Second()
nanosecond := now.Nanosecond()
weekday := now.Weekday()
unix := now.Unix()
location := now.Location()
isZero := now.IsZero()

Experimente você mesmo

package main

import (
	"fmt"
	"strings"
	"time"
)

func main() {
	// Ler entrada
	var formatRequests string
	fmt.Scanln(&formatRequests)
	
	// Usar um horário fixo para saída consistente (horário de referência do Go)
	// Em vez de time.Now(), use time.Date para resultados previsíveis
	currentTime := time.Date(2006, 1, 2, 15, 4, 5, 0, time.UTC)
	
	// Dividir as solicitações de formato
	formats := strings.Split(formatRequests, ",")
	
	// TODO: Escreva seu código abaixo
	// Exibir cabeçalho da aplicação
	// Exibir confirmação de captura de timestamp
	// Exibir cabeçalho de formatos
	// Processar cada solicitação de formato e exibir adequadamente
	// Usar um mapa para rastrear componentes únicos para contagem
	// Usar formatação adequada (ex: %02d para números preenchidos com zero)
	// Exibir estatísticas de resumo
	// Exibir detalhes de tempo adicionais
	// Exibir mensagem de conclusão
	
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica & Fluxo