Menu
Coddy logo textTech

Formatage de l'heure

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

Une fois que vous avez un objet time.Time, vous aurez souvent besoin de le convertir dans un format de chaîne lisible. Go utilise une approche unique pour le formatage de l'heure qui est différente des autres langages de programmation.

Au lieu d'utiliser des codes de formatage 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 clé est que vous disposez les composants de la date de référence selon le modèle que vous souhaitez. Pour un format YYYY-MM-DD, vous utilisez "2006-01-02" parce que c'est ainsi que la date de référence apparaît dans ce modèle. Pour un format différent comme Jan 2, 2006, vous utiliseriez "Jan 2, 2006".

Cette approche basée sur le format rend le formatage de l'heure de Go à la fois mémorable et flexible. Une fois que vous vous souvenez de la date de référence, vous pouvez créer n'importe quel format en agençant 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 prenant en charge plusieurs formats, qui formate des objets time.Time à l’aide du système unique de mise en page basé sur une date de référence de Go. Ce défi testera 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 les 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 package strconv
  3. Créer un objet time.Time à l’aide de time.Date avec les valeurs analysées (utiliser 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 pour 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 package time pour les opérations liées au temps, le package strings pour séparer les chaînes d’entrée, le package strconv pour convertir les chaînes en entiers, et le package fmt pour produire une sortie mise en forme. N’oubliez pas que le formatage du temps en Go utilise la date de référence Mon Jan 2 15:04:05 MST 2006 comme modèle, et que vous disposez ces composants selon le modèle souhaité. Ce défi montre comment fonctionne le système unique de mise en forme fondé sur des mises en page de Go, en vous demandant d’appliquer plusieurs modèles de format différents au même objet temporel.

Essayez vous-même

package main

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

func main() {
	// Lire l'entrée
	var dateInput string
	var formatInput string
	fmt.Scanln(&dateInput)
	fmt.Scanln(&formatInput)
	
	// Analyser les composants de la date en les séparant par des deux-points
	dateComponents := strings.Split(dateInput, ":")
	
	// Convertir les composants de type chaîne 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: Écrivez votre code ci-dessous
	// Afficher l'en-tête de l'application
	// Afficher l'heure source
	// Traiter chaque demande de format et afficher les sorties formatées
	// 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