[java] Joda-Time으로 특정 날짜가 특정 날짜 범위와 겹치는지 확인하기

Joda-Time은 자바용 날짜 및 시간 라이브러리입니다. 이 라이브러리를 사용하여 특정 날짜가 특정 날짜 범위와 겹치는지 확인하는 방법을 알아보겠습니다.

Joda-Time 라이브러리 추가하기

먼저, Joda-Time 라이브러리를 자바 프로젝트에 추가해야 합니다. Maven 또는 Gradle과 같은 의존성 관리 도구를 사용한다면, 해당 도구를 통해 Joda-Time 의존성을 추가할 수 있습니다. 아래는 Maven을 사용하는 경우의 예시입니다:

<dependencies>
    <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
        <version>2.10.10</version>
    </dependency>
</dependencies>

특정 날짜 범위와 겹치는지 확인하기

import org.joda.time.DateTime;
import org.joda.time.Interval;

public class DateRangeOverlapChecker {
    
    public static boolean isOverlap(DateTime startDate1, DateTime endDate1, DateTime startDate2, DateTime endDate2) {
        Interval interval1 = new Interval(startDate1, endDate1);
        Interval interval2 = new Interval(startDate2, endDate2);
        
        return interval1.overlaps(interval2);
    }
    
    public static void main(String[] args) {
        DateTime startDate1 = new DateTime(2021, 1, 1, 0, 0); // 첫 번째 범위의 시작 날짜와 시간
        DateTime endDate1 = new DateTime(2021, 1, 7, 23, 59); // 첫 번째 범위의 종료 날짜와 시간
        
        DateTime startDate2 = new DateTime(2021, 1, 5, 12, 0); // 두 번째 범위의 시작 날짜와 시간
        DateTime endDate2 = new DateTime(2021, 1, 10, 23, 59); // 두 번째 범위의 종료 날짜와 시간
        
        boolean isOverlap = isOverlap(startDate1, endDate1, startDate2, endDate2);
        
        System.out.println("날짜 범위 겹침 여부: " + isOverlap);
    }
}

위의 예시 코드는 isOverlap 메소드를 사용하여 두 개의 날짜 범위가 겹치는지 확인합니다. DateTimeInterval 클래스를 사용하여 날짜와 시간을 다룰 수 있습니다. 주어진 날짜와 시간으로 DateTime 객체를 생성하고 Interval 객체를 만들어 날짜 범위를 나타낼 수 있습니다.

interval1interval2 객체를 overlaps 메소드를 사용하여 겹치는지 확인하고, 겹치는 경우 true를 반환합니다.

결론

Joda-Time을 사용하여 특정 날짜가 특정 날짜 범위와 겹치는지 확인하는 방법을 알아보았습니다. 이를 활용하여 필요한 로직을 구현할 수 있습니다.

참고 자료