Obtener la hora actual
Parte de la sección Lógica y Flujo del Journey de GO de Coddy — lección 58 de 68.
Al trabajar con fechas y horas en tus programas de Go, necesitarás usar el paquete time integrado de Go. Este paquete proporciona toda la funcionalidad que necesitas para trabajar con operaciones relacionadas con el tiempo.
El punto de partida más común es obtener la hora actual. Go hace que esto sea sencillo con la función time.Now():
package main
import (
"fmt"
"time"
)
func main() {
now := time.Now()
fmt.Println(now)
}La función time.Now() devuelve un objeto time.Time que representa el momento actual en el tiempo. Cuando imprimes este objeto, muestra la fecha y la hora en un formato legible, incluyendo la información de la zona horaria.
Este objeto time.Time contiene toda la información sobre ese momento específico: el año, mes, día, hora, minuto, segundo e incluso nanosegundos. Usarás esto como la base para todas las demás operaciones de tiempo en Go.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Desafío
FácilCrea una aplicación de seguimiento de tiempo que capture la hora actual y la muestre en múltiples formatos. Este desafío pondrá a prueba tu capacidad para usar la función time.Now() y trabajar con objetos time.Time para extraer diferentes componentes del momento actual.
Recibirás una entrada:
- Una cadena que contiene solicitudes de formato de visualización separadas por comas en el formato
"format1,format2,format3"(por ejemplo,"full,date,time,year,month,day")
Tu tarea es:
- Usar
time.Now()para capturar la hora actual y almacenarla en una variable - Mostrar el encabezado de la aplicación:
"=== TIME TRACKER APPLICATION ===" - Mostrar la confirmación de captura de marca de tiempo:
"Current time captured successfully" - Analizar la entrada dividiéndola por comas para obtener las solicitudes de formato individuales
- Mostrar el encabezado de formatos:
"Displaying time in requested formats:" - Para cada solicitud de formato, mostrar la información de tiempo según el formato especificado:
- Para
"full": Mostrar"Full timestamp: [complete_time_object]" - Para
"date": Mostrar"Date only: [year]-[month]-[day]"(usa los componentes del método Date()) - Para
"time": Mostrar"Time only: [hour]:[minute]:[second]"(usa los métodos Hour(), Minute(), Second()) - Para
"year": Mostrar"Year: [year_value]"(usa el método Year()) - Para
"month": Mostrar"Month: [month_name]"(usa el método Month()) - Para
"day": Mostrar"Day: [day_value]"(usa el método Day()) - Para
"weekday": Mostrar"Weekday: [weekday_name]"(usa el método Weekday()) - Para
"unix": Mostrar"Unix timestamp: [unix_seconds]"(usa el método Unix())
- Para
- Contar y mostrar estadísticas:
"=== TIME INFORMATION SUMMARY ===""Total formats displayed: [number_of_formats]""Timestamp components extracted: [number_of_unique_components]"
- Mostrar detalles de tiempo adicionales:
"Additional time details:""- Nanoseconds: [nanosecond_value]"(usa el método Nanosecond())"- Location: [timezone_location]"(usa el método Location())"- Is zero time: [true_or_false]"(usa el método IsZero())
- Mostrar el mensaje de finalización:
"Time tracking completed - all requested formats processed"
Usa el paquete time para trabajar con objetos de tiempo, el paquete strings para dividir la cadena de entrada y el paquete fmt para la salida formateada. Recuerda que time.Now() devuelve un objeto time.Time que contiene toda la información sobre el momento actual, y puedes extraer componentes específicos utilizando los diversos métodos disponibles en este objeto. Este desafío demuestra cómo capturar la hora actual y extraer diferentes piezas de información de un solo objeto time.Time.
Hoja de referencia
Para trabajar con fechas y horas en Go, importa el paquete time:
import "time"Obtén la hora actual usando time.Now():
now := time.Now()
fmt.Println(now)La función time.Now() devuelve un objeto time.Time que representa el momento actual, incluyendo año, mes, día, hora, minuto, segundo, nanosegundos e información de la zona horaria.
Extrae componentes específicos de un objeto time.Time utilizando 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()Pruébalo tú mismo
package main
import (
"fmt"
"strings"
"time"
)
func main() {
// Leer entrada
var formatRequests string
fmt.Scanln(&formatRequests)
// Usar una hora fija para una salida consistente (hora de referencia de Go)
// En lugar de time.Now(), usar time.Date para resultados predecibles
currentTime := time.Date(2006, 1, 2, 15, 4, 5, 0, time.UTC)
// Dividir las solicitudes de formato
formats := strings.Split(formatRequests, ",")
// TODO: Escribe tu código a continuación
// Mostrar el encabezado de la aplicación
// Mostrar la confirmación de captura de marca de tiempo
// Mostrar el encabezado de formatos
// Procesar cada solicitud de formato y mostrarla en consecuencia
// Usar un mapa para rastrear componentes únicos para el conteo
// Usar el formato adecuado (por ejemplo, %02d para números con relleno de ceros)
// Mostrar estadísticas de resumen
// Mostrar detalles de tiempo adicionales
// Mostrar mensaje de finalización
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y Flujo
1Flujo de control avanzado
Switch con `fallthrough`Salir de bucles anidadosContinuar un bucle específicoLa sentencia `goto`Repaso: Control de bucles avanzado4Proyecto: Lista de tareas sencilla
Configuración del proyectoAñadir una tarea7Manejo de errores a fondo
Tipos de error personalizadosEnvolver errores con `%w`Desenvolver con `errors.Is`Desenvolver con `errors.As`Entendiendo `panic`Uso de `recover`Repaso - División segura10Trabajando con el tiempo
Obtener la hora actualCrear una hora específicaFormatear el tiempoParsing de cadenas de tiempoDuración del tiempoAritmética de tiempoSleeping y TickersResumen - Temporizador simple2Estructuras y Métodos
Definición de métodos en estructurasReceptores de valorReceptores de punteroElegir receptoresMétodos vs FuncionesResumen - Comportamiento de estructuras5Mapas en profundidad
Mapas de StructsPunteros como valores de MapVerificación de Maps NilComparación de MapsResumen - Contador de frecuencia de palabras3Interfaces (Conceptos básicos)
¿Qué es una interfaz?Definir una interfazImplementar una interfazUso de tipos de interfazInterfaz vacíaAserciones de tipoType SwitchResumen: Formas y comportamientos