[Java] 두 날짜 사이 일수 구하기

개 요

고객의 구매일자와 현재일자 두 날짜 사이의 일수(년수, 월수도)를 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] 두 날짜 사이 일수 구하기
Tagged on:         

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.