Menu
Coddy logo textTech

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.

quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

challenge icon

Desafío

Fácil

Crea 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:

  1. Usar time.Now() para capturar la hora actual y almacenarla en una variable
  2. Mostrar el encabezado de la aplicación: "=== TIME TRACKER APPLICATION ==="
  3. Mostrar la confirmación de captura de marca de tiempo: "Current time captured successfully"
  4. Analizar la entrada dividiéndola por comas para obtener las solicitudes de formato individuales
  5. Mostrar el encabezado de formatos: "Displaying time in requested formats:"
  6. 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())
  7. Contar y mostrar estadísticas:
    • "=== TIME INFORMATION SUMMARY ==="
    • "Total formats displayed: [number_of_formats]"
    • "Timestamp components extracted: [number_of_unique_components]"
  8. 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())
  9. 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
	
}
quiz iconPonte a prueba

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