트랙
/
F#
F#
/
연습 문제
/
미용실 예약 받기
미용실 예약 받기

미용실 예약 받기

학습 연습 문제

소개

날짜와 시간

F#의 DateTime은 날짜와 시간 정보를 모두 담고 있는 불변 객체예요. DateTime 인스턴스는 메서드를 호출해서 다뤄요. 한 번 DateTime을 만들면 그 값은 절대 바뀌지 않아요. DateTime을 수정하는 것처럼 보이는 메서드나 함수도 사실은 새로운 DateTime을 반환해요.

날짜와 시간을 글로 표현하는 방식은 문화권 에 따라 달라요. 날짜가 2019년 3월 28일로, 시간이 14:30:59로 설정된 DateTime을 생각해 봐요. 이 DateTime을 en-US 문화권(미국 영어)에서 string으로 변환하면 "3/28/19 2:30:59 PM"을 반환해요. fr-BE 문화권(벨기에 프랑스어)에서 같은 코드를 실행하면 다른 값인 "28/03/19 14:30:59"를 반환해요.

어떤 DateTime 메서드가 문화권에 따라 달라지는지 이해하는 것은 중요해요. 일반적으로 string을 다루는 DateTime 메서드는 입력이든 출력이든 현재 문화권에 의존해요.

지침

이 연습 문제에서는 2012년 9월 15일에 문을 연 뉴욕의 한 미용실을 위한 예약 스케줄러를 만들어요.

예약 날짜와 관련된 네 가지 작업이 있어요. 날짜와 시간은 다음 세 가지 형식 중 하나를 사용해요.

  • "7/25/2019 13:45:00"
  • "July 25, 2019 13:45:00"
  • "Thursday, July 25, 2019 13:45:00:00"
Caution

테스트는 자동으로 문화권을 en-US로 설정해요. 문화권을 직접 설정하거나 지정할 필요는 없어요.

1. 예약 날짜 파싱하기

예약 날짜의 텍스트 표현을 해당하는 DateTime 형식으로 파싱할 수 있는 schedule 함수를 구현해요.

schedule "7/25/2019 13:45:00"
// => DateTime(2019, 7, 25, 13, 45, 0)

2. 예약이 이미 지났는지 확인하기

예약 날짜를 받아서 예약이 과거의 어느 시점이었는지 확인하는 hasPassed 함수를 구현해요.

hasPassed (DateTime(1999, 12, 31, 9, 0, 0))
// => true

3. 예약이 오후인지 확인하기

예약 날짜를 받아서 예약이 오후(12:00 이상, 18:00 미만)인지 확인하는 isAfternoonAppointment 함수를 구현해요.

isAfternoonAppointment (DateTime(2019, 03, 29, 15, 0, 0))
// => true

4. 예약의 시간과 날짜 설명하기

예약 날짜를 받아서 그 날짜와 시간에 대한 설명을 반환하는 description 함수를 구현해요.

description (DateTime(2019, 03, 29, 15, 0, 0))
// => "You have an appointment on 3/29/2019 3:00:00 PM."

5. 기념일 날짜 반환하기

올해의 기념일 날짜인 9월 15일을 반환하는 anniversaryDate 함수를 구현해요.

anniversaryDate()
// => DateTime(2019, 9, 15, 0, 0, 0)
GitHub에서 편집 링크가 새 창이나 탭에서 열려요
F# Exercism

미용실 예약 받기 문제를 시작해 볼 준비가 됐나요?

Exercism에 가입하고 F# 트랙을 개념 18개연습 문제 148개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.