7장 날짜와 시간대의 함정을 제거한다
예약 서비스에서 “10시”는 불완전한 값이다. 날짜, 시간대, 일광절약시간 여부가 필요하다. 저장은 UTC 인스턴트로 통일하고, 사용자에게 보여 줄 때 지역 시간대로 변환하는 방법이 단순하다. 다만 매주 월요일 10시처럼 지역 시각 자체가 규칙인 일정은 시간대 이름도 보존한다.
비교 전에 입력이 유효한지 확인한다. 시작은 종료보다 빨라야 하고, 과거 예약 정책을 적용해야 하며, 경계가 맞닿은 두 예약을 겹침으로 볼지 정해야 한다. 이 책은 [start, end) 구간을 사용한다. 10시~11시 예약과 11시~12시 예약은 겹치지 않는다.
const overlaps = start < existingEnd && end > existingStart;
이 한 줄보다 중요한 것은 구간 규칙을 테스트 이름과 사용자 문구에 함께 남기는 일이다.