Menu
CoddyTech

Formatage de l'heure

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

Une fois que tu as un objet time.Time, tu auras souvent besoin de le convertir en une chaîne lisible. Go utilise une approche unique pour le formatage de l’heure, différente de celle des autres langages de programmation.

Au lieu d’utiliser des codes de format comme %Y-%m-%d, Go utilise une date de référence comme modèle. Cette date de référence est Mon Jan 2 15:04:05 MST 2006, qui représente le moment exact : le 2 janvier 2006 à 15:04:05, heure normale des Rocheuses.

now := time.Now()
formatted := now.Format("2006-01-02")
fmt.Println(formatted) // Sortie : 2023-10-26

L’idée essentielle est de disposer les composants de la date de référence selon le modèle souhaité. Pour un format YYYY-MM-DD, tu utilises "2006-01-02", car c’est ainsi que la date de référence s’affiche selon ce modèle. Pour un autre format comme Jan 2, 2006, tu utiliserais "Jan 2, 2006".

Cette approche basée sur une disposition rend le formatage de l’heure en Go à la fois mémorable et flexible. Une fois que tu te souviens de la date de référence, tu peux créer n’importe quel format en organisant simplement ses composants selon le modèle souhaité.

challenge icon

Défi

Facile

Créez un système d’affichage de dates et d’heures en plusieurs formats qui formate des objets time.Time à l’aide du système unique de mise en page de Go fondé sur une date de référence. Ce défi mettra à l’épreuve votre capacité à utiliser la méthode Format avec différents modèles de mise en page afin de créer diverses représentations de dates et d’heures.

Vous recevrez deux entrées :

  • Une chaîne contenant des informations de date au format "year:month:day:hour:minute" (par exemple, "2023:12:25:14:30")
  • Une chaîne contenant des demandes de format séparées par des virgules au format "format1,format2,format3" (par exemple, "iso,american,european,time12,time24")

Votre tâche consiste à :

  1. Analyser la première entrée en la séparant au niveau des deux-points afin d’extraire les valeurs de l’année, du mois, du jour, de l’heure et des minutes
  2. Convertir ces valeurs de chaîne en entiers à l’aide du paquet strconv
  3. Créer un objet time.Time à l’aide de time.Date et des valeurs analysées (utilisez time.UTC pour le fuseau horaire, et 0 pour les secondes et les nanosecondes)
  4. Afficher l’en-tête de l’application : "=== DATE/TIME FORMATTER ==="
  5. Afficher l’heure source : "Source time: [complete_time_object]"
  6. Analyser la deuxième entrée en la séparant au niveau des virgules afin d’obtenir les demandes de format
  7. Afficher l’en-tête de mise en forme : "Formatted outputs:"
  8. Pour chaque demande de format, utiliser la chaîne de mise en page appropriée avec la méthode Format :
    • Pour "iso" : utiliser la mise en page "2006-01-02" et afficher "ISO format: [formatted_result]"
    • Pour "american" : utiliser la mise en page "01/02/2006" et afficher "American format: [formatted_result]"
    • Pour "european" : utiliser la mise en page "02/01/2006" et afficher "European format: [formatted_result]"
    • Pour "long" : utiliser la mise en page "January 2, 2006" et afficher "Long format: [formatted_result]"
    • Pour "time12" : utiliser la mise en page "3:04 PM" et afficher "12-hour time: [formatted_result]"
    • Pour "time24" : utiliser la mise en page "15:04" et afficher "24-hour time: [formatted_result]"
    • Pour "full" : utiliser la mise en page "Monday, January 2, 2006 at 3:04 PM" et afficher "Full format: [formatted_result]"
    • Pour "compact" : utiliser la mise en page "20060102" et afficher "Compact format: [formatted_result]"
  9. Calculer et afficher les statistiques :
    • "=== FORMATTING SUMMARY ==="
    • "Total formats applied: [number_of_format_requests]"
    • "Date components: [year]-[month]-[day]"
    • "Time components: [hour]:[minute]"
  10. Afficher les informations de référence :
    • "=== REFERENCE DATE INFO ==="
    • "Go uses reference date: Mon Jan 2 15:04:05 MST 2006"
    • "This represents: January 2nd, 2006 at 3:04:05 PM"
    • "Layout patterns arrange these components as needed"
  11. Afficher le message de fin : "Date formatting completed using Go's layout system"

Utilisez le paquet time pour les opérations sur les heures, le paquet strings pour séparer les chaînes d’entrée, le paquet strconv pour convertir les chaînes en entiers et le paquet fmt pour la sortie formatée. N’oubliez pas que le formatage des heures dans Go utilise la date de référence Mon Jan 2 15:04:05 MST 2006 comme modèle, et que vous disposez ces éléments selon le modèle souhaité. Ce défi montre le fonctionnement du système unique de formatage de Go fondé sur des mises en page en vous faisant appliquer plusieurs modèles de format différents au même objet horaire.

Essayez vous-même

package main

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

func main() {
	// Lire les données d'entrée
	var dateInput string
	var formatInput string
	fmt.Scanln(&dateInput)
	fmt.Scanln(&formatInput)
	
	// Analyser les composants de la date en les séparant aux deux-points
	dateComponents := strings.Split(dateInput, ":")
	
	// Convertir les composants textuels en entiers
	year, _ := strconv.Atoi(dateComponents[0])
	month, _ := strconv.Atoi(dateComponents[1])
	day, _ := strconv.Atoi(dateComponents[2])
	hour, _ := strconv.Atoi(dateComponents[3])
	minute, _ := strconv.Atoi(dateComponents[4])
	
	// Créer un objet time.Time
	sourceTime := time.Date(year, time.Month(month), day, hour, minute, 0, 0, time.UTC)
	
	// Analyser les demandes de format
	formatRequests := strings.Split(formatInput, ",")
	
	// TODO: Écrire votre code ci-dessous
	// Afficher l'en-tête de l'application
	// Afficher l'heure source
	// Traiter chaque demande de format et afficher les résultats formatés
	// Calculer et afficher les statistiques
	// Afficher les informations de référence
	// 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