[java] Joda-Time으로 특정 요일이 특정 날짜 범위 내에 있는지 확인하기

자바에서 날짜와 시간을 다루는 라이브러리인 Joda-Time은 많은 유용한 기능을 제공합니다. 이 중에서 특정 요일이 특정 날짜 범위 내에 있는지 확인하는 방법을 알아보겠습니다.

Joda-Time 설치하기

먼저 Joda-Time을 사용하기 위해 Maven 또는 Gradle과 같은 의존성 관리 도구를 사용하여 Joda-Time 라이브러리를 프로젝트에 추가합니다. 다음은 Maven을 사용하는 경우의 예시입니다.

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

Joda-Time을 사용하여 특정 요일 확인하기

import org.joda.time.DateTime;
import org.joda.time.Days;
import org.joda.time.DurationFieldType;

public class Main {
    public static void main(String[] args) {
        // 시작 날짜와 끝 날짜를 지정합니다.
        DateTime startDate = new DateTime(2021, 10, 1, 0, 0);
        DateTime endDate = new DateTime(2021, 12, 31, 23, 59);

        // 특정 요일을 지정합니다. 여기서는 월요일을 예로 들겠습니다.
        int desiredDayOfWeek = 1; // 월요일은 1, 화요일은 2, ... 일요일은 7

        // 시작 날짜부터 끝 날짜까지의 모든 날짜를 확인합니다.
        DateTime currentDate = startDate;
        while (currentDate.isBefore(endDate)) {
            // 현재 날짜의 요일을 확인합니다.
            int currentDayOfWeek = currentDate.getDayOfWeek();

            // 현재 날짜의 요일이 원하는 요일과 일치하면 true를 반환합니다.
            if (currentDayOfWeek == desiredDayOfWeek) {
                System.out.println("특정 요일이 범위 내에 존재합니다.");
                break;
            }

            // 다음 날로 이동합니다.
            currentDate = currentDate.withFieldAdded(DurationFieldType.days(), 1);
        }

        // 더 이상 특정 요일이 범위 내에 존재하지 않는 경우 false를 반환합니다.
        if (currentDate.isAfter(endDate)) {
            System.out.println("특정 요일이 범위 내에 존재하지 않습니다.");
        }
    }
}

위의 예시 코드는 주어진 시작 날짜와 끝 날짜 사이의 모든 날짜를 확인하며, 원하는 요일과 일치하는지 확인하는 방법을 보여줍니다. 시작 날짜부터 끝 날짜까지 하루씩 증가하며, 각 날짜의 요일을 확인하여 원하는 요일과 일치하는 경우 “특정 요일이 범위 내에 존재합니다.”를 출력하고 반복문을 종료합니다. 반대로, 범위 내에 더 이상 원하는 요일이 존재하지 않을 경우 “특정 요일이 범위 내에 존재하지 않습니다.”를 출력합니다.

이렇게 Joda-Time을 사용하면 특정 요일이 특정 날짜 범위 내에 있는지 확인할 수 있습니다.

참고 자료