개 요
고객의 구매일자와 현재일자 두 날짜 사이의 일수(년수, 월수도)를 Java에서 구현 한다.
※ 관련글 목록: http://yellow.kr/lifeView.jsp?s=java
구현
LocalDate 의 두 날짜 사이의 일수를 ChronoUnit 를 사용하여 구한다. Java 8 이상에서 사용할 수 있다.
package com.yellow.main; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import static java.time.temporal.ChronoUnit.DAYS; public class Test { public static void main(String[] args) { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd"); LocalDate date1 = LocalDate.parse("20220211", formatter); LocalDate date2 = LocalDate.now(); long days = DAYS.between(date1, date2); System.out.println(days + " days"); } }
위의 소스처럼 구매일자(date1)가 2022년 02월 11일, 현재일자(date2)가 2023년 02월 11일이면 결과값은 365이다. 엑셀에서의 DAYS함수를 이용하여 구한 값과 같다.
ChronoUnit에는 DAYS 외에도 YEARS, MONTHS, WEEKS 도 있으니 향후 필요하면 두 날짜 사이의 필요한 차이를 다음과 같이 구할 수 있겠다.
package com.yellow.main;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
public class Test {
public static void main(String[] args) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
LocalDate date1 = LocalDate.parse("20220211", formatter);
LocalDate date2 = LocalDate.parse("20241201", formatter);
long years = ChronoUnit.YEARS.between(date1, date2);
long months = ChronoUnit.MONTHS.between(date1, date2);
long weeks = ChronoUnit.WEEKS.between(date1, date2);
long days = ChronoUnit.DAYS.between(date1, date2);
long hours = ChronoUnit.HOURS.between(date1, date2);
long minutes = ChronoUnit.MINUTES.between(date1, date2);
long seconds = ChronoUnit.SECONDS.between(date1, date2);
System.out.println(years + " years");
System.out.println(months + " months");
System.out.println(weeks + " weeks");
System.out.println(days + " days");
System.out.println(hours + " hours");
System.out.println(minutes + " minutes");
System.out.println(seconds + " seconds");
}
}
위를 실행하면 다음과 같다:
2 years
33 months
146 weeks
1024 days
[Java] 두 날짜 사이 일수 구하기