프로그래밍 노트/JAVA

[Java] LocalDate, LocalDateTime 날짜 차이 계산하기

깡냉쓰 2020. 12. 22. 17:20
728x90
반응형

JAVA8 의 Time 패키지에서 날짜 차이를 구하는 방법을 알아보자.

  1. Duration 사용
  2. Period 사용
  3. ChronoUnit 사용

Duration

시간 사이의 간격을 나타낸다.
between() 정적 메서드를 사용하면, Duration 객체를 생성해 준다.

LocalDateTime startDateTime = LocalDateTime.of(2020, 12, 20, 9, 30, 30);
LocalDateTime endDateTime = LocalDateTime.of(2020, 12, 20, 10, 0, 40);

Duration duration = Duration.between(startDateTime, endDateTime);
log.debug("seconds : {}", duration.getSeconds());
// seconds : 1810

Period

날짜 사이의 간격을 나타낸다.
between() 정적 메서드를 사용하면, Period 객체를 생성해 준다.

LocalDate startDateTime = LocalDate.of(2020, 12, 18);
LocalDate endDateTime = LocalDate.of(2022, 12, 20);

Period period = Period.between(startDateTime, endDateTime);
log.debug("Years : {}", period.getYears());
log.debug("Months : {}", period.getMonths());
log.debug("Days : {}", period.getDays());
// Years : 2
// Months : 0
// Days : 2

ChronoUnit

Duration과 Period 객체를 생성하지 않고 특정 시간 단위로 차이를 구하는 방법이다.

LocalDateTime startDateTime = LocalDateTime.of(2020, 12, 20, 9, 30, 30);
LocalDateTime endDateTime = LocalDateTime.of(2022, 12, 20, 10, 0, 40);

log.debug("Years: {}", ChronoUnit.YEARS.between(startDateTime, endDateTime));
log.debug("Months: {}", ChronoUnit.MONTHS.between(startDateTime, endDateTime));
log.debug("Weeks: {}", ChronoUnit.WEEKS.between(startDateTime, endDateTime));
log.debug("Days: {}", ChronoUnit.DAYS.between(startDateTime, endDateTime));

startDateTime = LocalDateTime.of(2022, 12, 20, 9, 30, 30);
endDateTime = LocalDateTime.of(2022, 12, 20, 10, 0, 40);

log.debug("Hours: {}", ChronoUnit.HOURS.between(startDateTime, endDateTime));
log.debug("Minutes: {}", ChronoUnit.MINUTES.between(startDateTime, endDateTime));
log.debug("Seconds: {}", ChronoUnit.SECONDS.between(startDateTime, endDateTime));
// Years: 2
// Months: 24
// Weeks: 104
// Days: 730
// Hours: 0
// Minutes: 30
// Seconds: 1810
728x90
반응형