Menu
Coddy logo textTech

Obtenir l'heure actuelle

Fait partie de la section Logique & Flux du Journey GO de Coddy. Leçon 58 sur 68.

Lorsque vous travaillez avec des dates et des heures dans vos programmes Go, vous devez utiliser le package intégré time de Go. Ce package fournit toutes les fonctionnalités dont vous avez besoin pour effectuer des opérations liées au temps.

Le point de départ le plus courant consiste à obtenir l'heure actuelle. Go rend cela simple avec la fonction time.Now() :

package main

import (
    "fmt"
    "time"
)

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

La fonction time.Now() renvoie un objet time.Time qui représente le moment actuel. Lorsque vous affichez cet objet, il affiche la date et l'heure dans un format lisible, incluant les informations de fuseau horaire.

Cet objet time.Time contient toutes les informations sur ce moment précis : l’année, le mois, le jour, l’heure, la minute, la seconde et même les nanosecondes. Vous l’utiliserez comme fondement de toutes les autres opérations temporelles en Go.

challenge icon

Défi

Facile

Créez une application de suivi du temps qui capture l'heure actuelle et l'affiche dans plusieurs formats. Ce défi mettra à l'épreuve votre capacité à utiliser la fonction time.Now() et à travailler avec des objets time.Time pour extraire différents composants de l'instant présent.

Vous recevrez une entrée :

  • Une chaîne contenant des demandes de format d'affichage séparées par des virgules, au format "format1,format2,format3" (par exemple, "full,date,time,year,month,day")

Votre tâche consiste à :

  1. Utiliser time.Now() pour capturer l'heure actuelle et la stocker dans une variable
  2. Afficher l'en-tête de l'application : "=== TIME TRACKER APPLICATION ==="
  3. Afficher la confirmation de capture de l'horodatage : "Current time captured successfully"
  4. Analyser l'entrée en la séparant sur les virgules afin d'obtenir les différentes demandes de format
  5. Afficher l'en-tête des formats : "Displaying time in requested formats:"
  6. Pour chaque demande de format, afficher les informations temporelles selon le format spécifié :
    • Pour "full" : afficher "Full timestamp: [complete_time_object]"
    • Pour "date" : afficher "Date only: [year]-[month]-[day]" (utiliser les composants de la méthode Date())
    • Pour "time" : afficher "Time only: [hour]:[minute]:[second]" (utiliser les méthodes Hour(), Minute(), Second())
    • Pour "year" : afficher "Year: [year_value]" (utiliser la méthode Year())
    • Pour "month" : afficher "Month: [month_name]" (utiliser la méthode Month())
    • Pour "day" : afficher "Day: [day_value]" (utiliser la méthode Day())
    • Pour "weekday" : afficher "Weekday: [weekday_name]" (utiliser la méthode Weekday())
    • Pour "unix" : afficher "Unix timestamp: [unix_seconds]" (utiliser la méthode Unix())
  7. Compter et afficher les statistiques :
    • "=== TIME INFORMATION SUMMARY ==="
    • "Total formats displayed: [number_of_formats]"
    • "Timestamp components extracted: [number_of_unique_components]"
  8. Afficher des détails temporels supplémentaires :
    • "Additional time details:"
    • "- Nanoseconds: [nanosecond_value]" (utiliser la méthode Nanosecond())
    • "- Location: [timezone_location]" (utiliser la méthode Location())
    • "- Is zero time: [true_or_false]" (utiliser la méthode IsZero())
  9. Afficher le message de fin : "Time tracking completed - all requested formats processed"

Utilisez le package time pour travailler avec les objets temporels, le package strings pour séparer la chaîne d'entrée et le package fmt pour la sortie formatée. N'oubliez pas que time.Now() renvoie un objet time.Time qui contient toutes les informations sur l'instant présent, et que vous pouvez extraire des composants spécifiques à l'aide des différentes méthodes disponibles sur cet objet. Ce défi montre comment capturer l'heure actuelle et extraire différentes informations à partir d'un seul objet time.Time.

Essayez vous-même

package main

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

func main() {
	// Lire l'entrée
	var formatRequests string
	fmt.Scanln(&formatRequests)
	
	// Utiliser une heure fixe pour une sortie cohérente (heure de référence de Go)
	// Au lieu de time.Now(), utiliser time.Date pour des résultats prévisibles
	currentTime := time.Date(2006, 1, 2, 15, 4, 5, 0, time.UTC)
	
	// Diviser les demandes de format
	formats := strings.Split(formatRequests, ",")
	
	// TODO: Écrivez votre code ci-dessous
	// Afficher l'en-tête de l'application
	// Afficher la confirmation de capture de l'horodatage
	// Afficher l'en-tête des formats
	// Traiter chaque demande de format et l'afficher en conséquence
	// Utiliser une map pour suivre les composants uniques pour le comptage
	// Utiliser un formatage approprié (par exemple, %02d pour les nombres complétés par des zéros)
	// Afficher les statistiques récapitulatives
	// Afficher des détails temporels supplémentaires
	// Afficher le message de fin
	
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique & Flux

Entraînez-vous par vous-même : Compilateur Go en ligne