Un DateTime en F# es un objeto inmutable que contiene información tanto de fecha como de hora. Las instancias de DateTime se manipulan llamando a sus métodos. Una vez que se ha construido un DateTime, su valor nunca puede cambiar. Cualquier método o función que parezca modificar un DateTime en realidad devolverá un nuevo DateTime.
La representación textual de las fechas y las horas depende de la cultura. Pensemos en un DateTime cuya fecha sea el 28 de marzo de 2019 y cuya hora sea las 14:30:59. Convertir este DateTime a string cuando se usa la cultura en-US (inglés estadounidense) devuelve "3/28/19 2:30:59 PM". Al usar la cultura fr-BE (francés belga), el mismo código devuelve un valor distinto: "28/03/19 14:30:59".
Es importante saber qué métodos de DateTime dependen de la cultura. En general, cualquier método de DateTime que trabaje con strings (ya sea como entrada o como salida) dependerá de la cultura actual.
En este ejercicio vas a trabajar en un planificador de citas para un salón de belleza de Nueva York que abrió el 15 de septiembre de 2012.
Tienes cuatro tareas, y todas ellas girarán en torno a fechas de citas. Las fechas y las horas usarán uno de los tres formatos siguientes:
"7/25/2019 13:45:00""July 25, 2019 13:45:00""Thursday, July 25, 2019 13:45:00:00"Los tests establecerán automáticamente la cultura como en-US; no tienes que establecer ni especificar la cultura tú mismo.
Implementa la función schedule, que puede analizar una representación textual de la fecha de una cita y convertirla al formato DateTime correspondiente:
schedule "7/25/2019 13:45:00"
// => DateTime(2019, 7, 25, 13, 45, 0)
Implementa la función hasPassed, que recibe la fecha de una cita y comprueba si la cita quedó en algún momento del pasado:
hasPassed (DateTime(1999, 12, 31, 9, 0, 0))
// => true
Implementa la función isAfternoonAppointment, que recibe la fecha de una cita y comprueba si la cita es por la tarde (>= 12:00 y < 18:00):
isAfternoonAppointment (DateTime(2019, 03, 29, 15, 0, 0))
// => true
Implementa la función description, que recibe la fecha de una cita y devuelve una descripción de esa fecha y hora:
description (DateTime(2019, 03, 29, 15, 0, 0))
// => "You have an appointment on 3/29/2019 3:00:00 PM."
Implementa la función anniversaryDate, que devuelve la fecha de aniversario de este año, que es el 15 de septiembre:
anniversaryDate()
// => DateTime(2019, 9, 15, 0, 0, 0)
Regístrate en Exercism para aprender y dominar F# con 18 conceptos148 ejercicios y mentoría humana real, todo gratis.