7. 정리
- 시간대가 필요한가로 타입을 고른다. 날짜만
LocalDate, 국내 시각LocalDateTime, 절대 시각·로그·만료는Instant, 월 단위는YearMonth. - 모든 타입은 불변. 연산 결과를 받아야 하고, 포매터는
static final로 공유한다. - 월말은
YearMonth.atEndOfMonth()로 다시 구한다.plusMonths를 이어 가면 31→28→28 로 유실된다. - 영업일은 직접 센다. 주말 + 공휴일 테이블, 지급일은 다음 영업일·급여는 직전 영업일.
Period는 년월일,Duration은 시분초, 총량은ChronoUnit.between. 자정을 넘길 수 있으면 날짜를 포함해 잰다.yyyy소문자,HH대문자, 입력 검증은 STRICT +uuuu. SMART 는 2월 31일을 조용히 28일로 만든다.LocalDateTime.now()대신Instant.now()또는now(ZoneId). 서버 시간대에 값이 좌우되지 않게 한다. 같은 순간 비교는isEqual.- DB 는
LocalDate/LocalDateTime으로 직접 매핑하고, 레거시Date는toInstant()로 건너온다.Clock을 주입하면 연말·월말 경계를 테스트할 수 있다.
중급 레벨의 빈틈은 여기까지입니다. 다음은 고급 07 Java 21 모던 문법 에서 이 레슨들이 이미 쓰고 있는 record, switch 식, 텍스트 블록, sealed, 패턴 매칭을 정면으로 다룹니다.