Um DateTime em F# é um objeto imutável que contém informações tanto de data quanto de hora. As instâncias de DateTime são manipuladas chamando seus métodos. Depois que um DateTime é construído, seu valor nunca pode mudar. Qualquer método ou função que pareça modificar um DateTime na verdade retorna um novo DateTime.
A representação textual de datas e horas depende da cultura. Considere um DateTime com a data definida para 28 de março de 2019 e o horário definido para 14:30:59. Converter esse DateTime em uma string ao usar a cultura en-US (inglês americano) retorna "3/28/19 2:30:59 PM". Ao usar a cultura fr-BE (francês belga), o mesmo código retorna um valor diferente: "28/03/19 14:30:59".
Entender quais métodos de DateTime dependem da cultura é importante. Em geral, qualquer método de DateTime que lide com strings (seja como entrada ou como saída) dependerá da cultura atual.
Neste exercício você vai trabalhar em um agendador de compromissos para um salão de beleza em Nova York que abriu em 15 de setembro de 2012.
Você tem quatro tarefas, e todas elas envolvem datas de agendamento. As datas e os horários usarão um dos três formatos a seguir:
"7/25/2019 13:45:00""July 25, 2019 13:45:00""Thursday, July 25, 2019 13:45:00:00"Os testes vão definir automaticamente a cultura como en-US. Você não precisa definir nem especificar a cultura por conta própria.
Implemente a função schedule, que consegue interpretar uma representação textual de uma data de agendamento no formato DateTime correspondente:
schedule "7/25/2019 13:45:00"
// => DateTime(2019, 7, 25, 13, 45, 0)
Implemente a função hasPassed, que recebe uma data de agendamento e verifica se o agendamento ficou em algum momento no passado:
hasPassed (DateTime(1999, 12, 31, 9, 0, 0))
// => true
Implemente a função isAfternoonAppointment, que recebe uma data de agendamento e verifica se o agendamento é à tarde (>= 12:00 e < 18:00):
isAfternoonAppointment (DateTime(2019, 03, 29, 15, 0, 0))
// => true
Implemente a função description, que recebe uma data de agendamento e retorna uma descrição dessa data e desse horário:
description (DateTime(2019, 03, 29, 15, 0, 0))
// => "You have an appointment on 3/29/2019 3:00:00 PM."
Implemente a função anniversaryDate, que retorna a data de aniversário deste ano, que é 15 de setembro:
anniversaryDate()
// => DateTime(2019, 9, 15, 0, 0, 0)
Crie sua conta no Exercism para aprender e dominar F# com 18 conceitos148 exercícios e mentoria humana de verdade, tudo de graça.