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 devrez utiliser le package time intégré de Go. Ce package fournit toutes les fonctionnalités dont vous avez besoin pour travailler avec 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 utiliserez cela comme base pour toutes les autres opérations temporelles en Go.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Défi
FacileCréez une application de suivi du temps qui capture l'heure actuelle et l'affiche dans plusieurs formats. Ce défi testera votre capacité à utiliser la fonction time.Now() et à travailler avec des objets time.Time pour extraire différents composants du moment présent.
Vous recevrez une entrée :
- Une chaîne de caractères 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 à :
- Utiliser
time.Now()pour capturer l'heure actuelle et la stocker dans une variable - Afficher l'en-tête de l'application :
"=== TIME TRACKER APPLICATION ===" - Afficher la confirmation de capture de l'horodatage :
"Current time captured successfully" - Analyser l'entrée en la divisant par les virgules pour obtenir les demandes de format individuelles
- Afficher l'en-tête des formats :
"Displaying time in requested formats:" - 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]"(utilisez les composants de la méthode Date()) - Pour
"time": Afficher"Time only: [hour]:[minute]:[second]"(utilisez les méthodes Hour(), Minute(), Second()) - Pour
"year": Afficher"Year: [year_value]"(utilisez la méthode Year()) - Pour
"month": Afficher"Month: [month_name]"(utilisez la méthode Month()) - Pour
"day": Afficher"Day: [day_value]"(utilisez la méthode Day()) - Pour
"weekday": Afficher"Weekday: [weekday_name]"(utilisez la méthode Weekday()) - Pour
"unix": Afficher"Unix timestamp: [unix_seconds]"(utilisez la méthode Unix())
- Pour
- Compter et afficher les statistiques :
"=== TIME INFORMATION SUMMARY ===""Total formats displayed: [number_of_formats]""Timestamp components extracted: [number_of_unique_components]"
- Afficher des détails temporels supplémentaires :
"Additional time details:""- Nanoseconds: [nanosecond_value]"(utilisez la méthode Nanosecond())"- Location: [timezone_location]"(utilisez la méthode Location())"- Is zero time: [true_or_false]"(utilisez la méthode IsZero())
- 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 diviser 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 le moment actuel, et vous pouvez extraire des composants spécifiques en utilisant les diverses méthodes disponibles sur cet objet. Ce défi démontre comment capturer l'heure actuelle et extraire différentes pièces d'information d'un seul objet time.Time.
Aide-mémoire
Pour travailler avec les dates et les heures en Go, importez le package time :
import "time"Obtenez l'heure actuelle en utilisant time.Now() :
now := time.Now()
fmt.Println(now)La fonction time.Now() renvoie un objet time.Time représentant le moment actuel, incluant l'année, le mois, le jour, l'heure, la minute, la seconde, les nanosecondes et les informations de fuseau horaire.
Extrayez des composants spécifiques d'un objet time.Time à l'aide de méthodes :
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()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
}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
1Structures de contrôle avancées
Switch avec `fallthrough`Sortir de boucles imbriquéesContinuer une boucle spécifiqueL'instruction `goto`Récapitulatif - Contrôle de boucle avancé4Projet : Liste de tâches simple
Configuration du projetAjouter une tâche7Gestion des erreurs en profondeur
Types d'erreurs personnalisésEnvelopper des erreurs avec `%w`Désenvelopper avec `errors.Is`Désenvelopper avec `errors.As`Comprendre `panic`Utiliser `recover`Récapitulatif - Division sécurisée10Travailler avec le temps
Obtenir l'heure actuelleCréer une heure spécifiqueFormatage de l'heureParsing de chaînes de tempsDurée temporelleArithmétique temporelleSleep et TickersRécapitulatif - Minuteur simple2Structures et Méthodes
Définir des méthodes sur des structuresReceveurs par valeurReceveurs par pointeurChoisir les receveursMéthodes vs FonctionsRécapitulatif - Comportement des structures5Les Maps en profondeur
Maps de StructsPointeurs comme valeurs de MapTester les Maps NilComparer des MapsRécapitulatif - Compteur de fréquence de mots3Interfaces (Les bases)
Qu'est-ce qu'une Interface ?Définir une InterfaceImplémenter une InterfaceUtiliser les types d'InterfaceInterface videAssertions de typeType SwitchRécapitulatif - Formes et comportements