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.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Desafio
FácilCrie 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 é:
- Usar
time.Now()para capturar a hora atual e armazená-la em uma variável - Exibir o cabeçalho do aplicativo:
"=== TIME TRACKER APPLICATION ===" - Exibir a confirmação de captura do timestamp:
"Current time captured successfully" - Analisar a entrada dividindo-a por vírgulas para obter as solicitações de formato individuais
- Exibir o cabeçalho dos formatos:
"Displaying time in requested formats:" - 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())
- Para
- Contar e exibir estatísticas:
"=== TIME INFORMATION SUMMARY ===""Total formats displayed: [number_of_formats]""Timestamp components extracted: [number_of_unique_components]"
- 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())
- 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
}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
1Fluxo de Controle Avançado
Switch com `fallthrough`Interrompendo Loops AninhadosContinuando um Loop EspecíficoA Instrução `goto`Recapitulação - Controle de Loop Avançado4Projeto: Lista de Tarefas Simples
Configuração do ProjetoAdicionando uma Tarefa7Tratamento de Erros em Profundidade
Tipos de Erro PersonalizadosWrapping de Erros com `%w`Unwrapping com `errors.Is`Unwrapping com `errors.As`Entendendo o `panic`Usando o `recover`Recapitulação - Divisão Segura10Trabalhando com Tempo
Obtendo o Horário AtualCriando um Horário EspecíficoFormatando o TempoParsing de Strings de TempoDuração de TempoAritmética de TempoSleep e TickersRecapitulação - Timer Simples2Structs e Métodos
Definindo Métodos em StructsRecebedores de ValorRecebedores de PonteiroEscolhendo RecebedoresMétodos vs FunçõesRecapitulação - Comportamento de Structs5Mapas em Profundidade
Mapas de StructsPonteiros como Valores de MapVerificando Mapas NilComparando MapasRecapitulação - Contador de Frequência de Palavras3Interfaces (O Básico)
O que é uma Interface?Definindo uma InterfaceImplementando uma InterfaceUsando Tipos de InterfaceInterface VaziaAsserções de TipoType SwitchRecapitulação - Formas e Comportamentos