Un DateTime in F# è un oggetto immutabile che contiene informazioni sia sulla data che sull'ora. Le istanze di DateTime si manipolano chiamando i loro metodi. Una volta che un DateTime è stato creato, il suo valore non può più cambiare. Qualsiasi metodo/funzione che sembra modificare un DateTime in realtà restituisce un nuovo DateTime.
La rappresentazione testuale di date e orari dipende dalla cultura. Prendi un DateTime con la data impostata al 28 marzo 2019 e l'ora impostata a 14:30:59. Convertendo questo DateTime in una string quando si usa la cultura en-US (inglese americano) si ottiene "3/28/19 2:30:59 PM". Usando la cultura fr-BE (francese belga), lo stesso codice restituisce un valore diverso: "28/03/19 14:30:59".
È importante sapere quali metodi di DateTime dipendono dalla cultura. In generale, qualsiasi metodo di DateTime che ha a che fare con le string (come input o output) dipenderà dalla cultura corrente.
In questo esercizio lavorerai a un pianificatore di appuntamenti per un salone di bellezza a New York, aperto il 15 settembre 2012.
Ci sono cinque compiti, che riguardano tutti le date degli appuntamenti. Le date e gli orari useranno uno dei tre formati seguenti:
"7/25/2019 13:45:00""July 25, 2019 13:45:00""Thursday, July 25, 2019 13:45:00:00"I test imposteranno automaticamente la cultura su en-US: non devi impostarla né specificarla da solo.
Implementa la funzione schedule, che sa analizzare una rappresentazione testuale di una data di appuntamento nel formato DateTime corrispondente:
schedule "7/25/2019 13:45:00"
// => DateTime(2019, 7, 25, 13, 45, 0)
Implementa la funzione hasPassed, che prende una data di appuntamento e controlla se l'appuntamento è nel passato:
hasPassed (DateTime(1999, 12, 31, 9, 0, 0))
// => true
Implementa la funzione isAfternoonAppointment, che prende una data di appuntamento e controlla se l'appuntamento è nel pomeriggio (>= 12:00 e < 18:00):
isAfternoonAppointment (DateTime(2019, 03, 29, 15, 0, 0))
// => true
Implementa la funzione description, che prende una data di appuntamento e restituisce una descrizione di quella data e di quell'ora:
description (DateTime(2019, 03, 29, 15, 0, 0))
// => "You have an appointment on 3/29/2019 3:00:00 PM."
Implementa la funzione anniversaryDate, che restituisce la data dell'anniversario di quest'anno, cioè il 15 settembre:
anniversaryDate()
// => DateTime(2019, 9, 15, 0, 0, 0)
Iscriviti a Exercism per imparare e padroneggiare F# con 18 concetti148 esercizi e il mentoring di persone reali, tutto gratis.