Period
d-day를 구해야하는 로직에 Period class의 between 메서드를 사용했다.
LocalDate start = LocalDate.of(2023, 1, 1);
LocalDate end = LocalDate.of(2023, 8, 9);
Period between = Period.between(start, end);
int days = between.getDays();
log.info("days={}", days); //days=8
실제로 start 와 end의 날짜는 220일 차이가 나지만 getDays()의 결과는 8이 나온다.
Period 클래스는 년, 월, 일 을 모두 이용해서 기간을 나타낸다.
LocalDate start = LocalDate.of(2023, 1, 1);
LocalDate end = LocalDate.of(2023, 8, 9);
Period between = Period.between(start, end);
int days = between.getDays();
log.info("days={}", days); //days=8
log.info("months={}", between.getMonths()); //months=7
log.info("years={}", between.getYears()); //years=0
ChronoUnit
ChronoUnit 을 이용해서 개선했다.
LocalDate start = LocalDate.of(2022, 1, 1);
LocalDate end = LocalDate.of(2023, 8, 9);
log.info("days={}", ChronoUnit.DAYS.between(start, end)); //days=585
log.info("months={}", ChronoUnit.MONTHS.between(start, end)); //months=19
log.info("years={}", ChronoUnit.YEARS.between(start, end)); //years=1
ChronoUnit enum을 이용해서 타입을 주고 between 메서드를 사용하면 해당 타입의 차이값으로 구해준다.
테스트를 더 열심히 하자.