Um DateTime em F# é um objeto imutável que contém informações tanto de data como de hora. As instâncias de DateTime são manipuladas chamando os seus métodos. Depois de um DateTime ser construído, o seu valor nunca pode mudar. Quaisquer métodos/funções que pareçam modificar um DateTime vão, na verdade, devolver um novo DateTime.
A representação textual de datas e horas depende da cultura. Considera um DateTime com a data definida como 28 de março de 2019 e a hora definida como 14:30:59. Ao converter este DateTime numa string com a cultura en-US (inglês americano), obtém-se "3/28/19 2:30:59 PM". Quando se usa a cultura fr-BE (francês belga), o mesmo código devolve um valor diferente: "28/03/19 14:30:59".
É importante perceber quais os métodos de DateTime que dependem da cultura. Em geral, qualquer método de DateTime que lide com strings (tanto como valor de entrada como de saída) depende da cultura atual.
Neste exercício vais trabalhar num agendador de marcações para um salão de beleza em Nova Iorque, que abriu a 15 de setembro de 2012.
Tens quatro tarefas, que envolvem todas datas de marcações. As datas e horas vão usar um dos três formatos seguintes:
"7/25/2019 13:45:00""July 25, 2019 13:45:00""Thursday, July 25, 2019 13:45:00:00"Os testes definem automaticamente a cultura como en-US; não precisas de definir nem especificar a cultura.
Implementa a função schedule que consegue interpretar uma representação textual de uma data de marcação e convertê-la no formato DateTime correspondente:
schedule "7/25/2019 13:45:00"
// => DateTime(2019, 7, 25, 13, 45, 0)
Implementa a função hasPassed, que recebe uma data de marcação e verifica se a marcação já ocorreu no passado:
hasPassed (DateTime(1999, 12, 31, 9, 0, 0))
// => true
Implementa a função isAfternoonAppointment, que recebe uma data de marcação e verifica se a marcação é à tarde (>= 12:00 e < 18:00):
isAfternoonAppointment (DateTime(2019, 03, 29, 15, 0, 0))
// => true
Implementa a função description, que recebe uma data de marcação e devolve uma descrição dessa data e hora:
description (DateTime(2019, 03, 29, 15, 0, 0))
// => "You have an appointment on 3/29/2019 3:00:00 PM."
Implementa a função anniversaryDate, que devolve a data de aniversário deste ano, que é 15 de setembro:
anniversaryDate()
// => DateTime(2019, 9, 15, 0, 0, 0)
Inscreve-te no Exercism para aprenderes e dominares F# com 18 conceitos148 exercícios, e mentoria humana real, tudo grátis.