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.
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"Les tests définiront automatiquement la culture sur en-US : tu n'as pas à définir ou spécifier la culture toi-même.
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)
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
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
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."
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)
Inscris-toi sur Exercism pour apprendre et maîtriser F# avec 18 concepts148 exercices, et un vrai mentorat humain, le tout gratuitement.