Percursos
/
F#
F#
/
Exercícios
/
Marcações para a beleza
Marcações para a beleza

Marcações para a beleza

Exercício de aprendizagem

Introdução

Datas e horas

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.

Instruções

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"
Caution

Os testes definem automaticamente a cultura como en-US; não precisas de definir nem especificar a cultura.

1. Interpreta a data da marcação

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)

2. Verifica se uma marcação já passou

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

3. Verifica se a marcação é à tarde

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

4. Descreve a hora e a data da marcação

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."

5. Devolve a data de aniversário

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)
Editar via GitHub A ligação abre numa nova janela ou separador
F# Exercism

Estás pronto para começar Marcações para a beleza?

Inscreve-te no Exercism para aprenderes e dominares F# com 18 conceitos148 exercícios, e mentoria humana real, tudo grátis.