Parcours
/
Go
Go
/
Exercices
/
Prends rendez-vous pour la beauté
Prends rendez-vous pour la beauté

Prends rendez-vous pour la beauté

Exercice d'apprentissage

Introduction

En Go, un Time est un type qui décrit un instant dans le temps. Les informations de date et d'heure sont accessibles, comparables et modifiables via ses méthodes, mais il existe aussi des fonctions que l'on appelle directement sur le paquet time lui-même. On peut récupérer la date et l'heure actuelles grâce à la fonction time.Now.

La fonction time.Parse analyse des strings pour en obtenir des valeurs de type Time. Go a une manière particulière de définir le format que tu attends pour l'analyse. Tu dois écrire un exemple de format en utilisant les valeurs de cet horodatage particulier : Mon Jan 2 15:04:05 -0700 MST 2006.

Par exemple :

import "time"

func parseTime() time.Time {
    date := "Tue, 09/22/1995, 13:00"
    layout := "Mon, 01/02/2006, 15:04"

    t, err := time.Parse(layout,date) // time.Time, error
}

// => 1995-09-22 13:00:00 +0000 UTC

La méthode Time.Format() renvoie une représentation du temps sous forme de string. Comme pour la fonction Parse, le format cible est de nouveau défini via un exemple qui utilise les valeurs de l'horodatage particulier.

Par exemple :

import (
    "fmt"
    "time"
)

func main() {
    t := time.Date(1995,time.September,22,13,0,0,0,time.UTC)
    formattedTime := t.Format("Mon, 01/02/2006, 15:04") // string
    fmt.Println(formattedTime)
}

// => Fri, 09/22/1995, 13:00

Options de format

Pour un format personnalisé, utilise une combinaison de ces options. En Go, il existe aussi des constantes de format prédéfinies pour les dates et les horodatages.

Composant Options
Année 2006 ; 06
Mois Jan ; January ; 01 ; 1
Jour 02 ; 2 ; _2 (pour un zéro initial)
Jour de la semaine Mon ; Monday
Heure 15 (format 24 heures) ; 3 ; 03 (AM ou PM)
Minute 04 ; 4
Seconde 05 ; 5
Indicateur AM/PM PM
Jour de l'année 002 ; __2

Le type time.Time propose diverses méthodes pour accéder à une composante précise du temps. Par exemple, l'heure : Time.Hour(), le mois : Time.Month(). Pour en savoir plus sur son fonctionnement, consulte la documentation officielle.

Le paquet time inclut aussi un autre type, Duration, qui représente le temps écoulé, ainsi que la prise en charge des localisations et des fuseaux horaires, des minuteurs et d'autres fonctionnalités associées qui seront abordées dans un autre concept.

Instructions

Dans cet exercice, tu vas travailler sur un planificateur de rendez-vous pour un salon de beauté qui a ouvert ses portes le 15 septembre 2012.

Tu as cinq tâches, qui porteront toutes sur des dates de rendez-vous.

1. Analyse la date d'un rendez-vous

Implémente la fonction Schedule pour analyser la représentation textuelle d'une date de rendez-vous et la convertir au format time.Time correspondant :

Schedule("7/25/2019 13:45:00")
// => 2019-07-25 13:45:00 +0000 UTC

2. Vérifie si un rendez-vous est déjà passé

Implémente la fonction HasPassed qui prend une date de rendez-vous et vérifie si le rendez-vous se situe quelque part dans le passé :

HasPassed("July 25, 2019 13:45:00")
// => true

3. Vérifie si le rendez-vous a lieu l'après-midi

Implémente la fonction IsAfternoonAppointment qui prend une date de rendez-vous et vérifie si le rendez-vous a lieu l'après-midi (>= 12:00 et < 18:00) :

IsAfternoonAppointment("Thursday, July 25, 2019 13:45:00")
// => true

4. Décris la date et l'heure du rendez-vous

Implémente la fonction Description qui prend une date de rendez-vous et renvoie une description de cette date et de cette heure :

Description("7/25/2019 13:45:00")
// => "You have an appointment on Thursday, July 25, 2019, at 13:45."

5. Renvoie la date anniversaire de l'ouverture du salon

Implémente la fonction AnniversaryDate qui renvoie la date anniversaire de l'ouverture du salon pour l'année en cours en UTC.

En supposant que l'année en cours soit 2020 :

AnniversaryDate()

// => 2020-09-15 00:00:00 +0000 UTC

Remarque : la valeur de retour est un time.Time et l'heure de la journée n'a pas d'importance.

Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
Go Exercism

Prêt à commencer Prends rendez-vous pour la beauté ?

Inscris-toi sur Exercism pour apprendre et maîtriser Go avec 34 concepts165 exercices, et un vrai mentorat humain, le tout gratuitement.