Parcours
/
F#
F#
/
Exercices
/
Prends rendez-vous pour la beauté
Prends rendez-vous pour la beauté

Prends rendez-vous pour la beauté

Exercice d'apprentissage

Introduction

Dates et heures

En F#, un DateTime est un objet immuable qui contient à la fois des informations de date et d'heure. On manipule les instances de DateTime en appelant leurs méthodes. Une fois qu'un DateTime a été construit, sa valeur ne peut plus jamais changer. Toutes les méthodes ou fonctions qui semblent modifier un DateTime renvoient en réalité un nouveau DateTime.

La représentation textuelle des dates et des heures dépend de la culture. Prenons un DateTime dont la date est fixée au 28 mars 2019 et l'heure à 14:30:59. Convertir ce DateTime en string avec la culture en-US (anglais américain) renvoie "3/28/19 2:30:59 PM". Avec la culture fr-BE (français de Belgique), le même code renvoie une valeur différente : "28/03/19 14:30:59".

Il est important de savoir quelles méthodes de DateTime dépendent de la culture. En général, toute méthode de DateTime qui manipule des strings (en entrée comme en sortie) dépend de la culture actuelle.

Instructions

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

Tu as quatre tâches, qui impliqueront toutes des dates de rendez-vous. Les dates et les heures utiliseront l'un des trois formats suivants :

  • "7/25/2019 13:45:00"
  • "July 25, 2019 13:45:00"
  • "Thursday, July 25, 2019 13:45:00:00"
Caution

Les tests définiront automatiquement la culture sur en-US : tu n'as pas à définir ou spécifier la culture toi-même.

1. Analyse la date de rendez-vous

Implémente la fonction schedule qui peut analyser une représentation textuelle d'une date de rendez-vous pour la convertir au format DateTime correspondant :

schedule "7/25/2019 13:45:00"
// => DateTime(2019, 7, 25, 13, 45, 0)

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 a eu lieu dans le passé :

hasPassed (DateTime(1999, 12, 31, 9, 0, 0))
// => 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 (DateTime(2019, 03, 29, 15, 0, 0))
// => true

4. Décris l'heure et la date 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 (DateTime(2019, 03, 29, 15, 0, 0))
// => "You have an appointment on 3/29/2019 3:00:00 PM."

5. Renvoie la date anniversaire

Implémente la fonction anniversaryDate qui renvoie la date anniversaire de cette année, c'est-à-dire le 15 septembre :

anniversaryDate()
// => DateTime(2019, 9, 15, 0, 0, 0)
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
F# Exercism

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

Inscris-toi sur Exercism pour apprendre et maîtriser F# avec 18 concepts148 exercices, et un vrai mentorat humain, le tout gratuitement.