[java] Joda-Time으로 특정 날짜 범위 내에서 특정 요일의 모든 날짜 구하기

Joda-Time은 Java에서 날짜와 시간을 다루기 위한 강력한 라이브러리입니다. 여기에서는 Joda-Time을 사용하여 특정 날짜 범위 내에서 특정 요일의 모든 날짜를 구하는 방법에 대해 알아보겠습니다.

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

먼저 프로젝트에 Joda-Time 라이브러리를 추가해야 합니다. Maven을 사용하는 경우 아래 의존성을 pom.xml 파일에 추가합니다.

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

Gradle을 사용하는 경우 아래 의존성을 build.gradle 파일에 추가합니다.

implementation 'joda-time:joda-time:2.10.10'

라이브러리를 추가하고 나면 Joda-Time의 클래스와 메서드를 사용할 수 있게 됩니다.

2. 특정 날짜 범위 내에서 특정 요일의 모든 날짜 구하기

특정 날짜 범위 내에서 특정 요일의 모든 날짜를 구하기 위해서는 다음과 같은 단계를 따릅니다:

  1. 시작일(startDate)과 종료일(endDate)을 정의합니다.
  2. 시작일부터 종료일까지의 모든 날짜를 반복하면서 특정 요일과 일치하는지 확인합니다.
  3. 일치하는 경우 해당 날짜를 출력하거나 저장합니다.

아래는 위 단계를 구현한 예제 코드입니다.

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

public class Main {
    public static void main(String[] args) {
        LocalDate startDate = new LocalDate(2022, 10, 1);
        LocalDate endDate = new LocalDate(2022, 10, 31);
        int targetWeekday = DateTimeConstants.MONDAY;

        LocalDate currentDate = startDate;
        while (currentDate.compareTo(endDate) <= 0) {
            if (currentDate.getDayOfWeek() == targetWeekday) {
                System.out.println(currentDate);
                // 여기에서 원하는 동작을 수행할 수 있습니다.
            }
            currentDate = currentDate.plusDays(1);
        }
    }
}

위 예제 코드는 2022년 10월 1일부터 2022년 10월 31일까지의 날짜 중에서 월요일을 찾아 출력하는 예제입니다. targetWeekday 변수를 다른 요일로 변경하여 원하는 요일을 선택할 수 있습니다.

마무리

Joda-Time을 사용하면 Java에서 날짜와 시간을 다루는 작업을 편리하게 수행할 수 있습니다. 위 예제를 참고하여 특정 날짜 범위 내에서 특정 요일의 모든 날짜를 구하는 작업을 쉽게 수행할 수 있습니다.

참고 자료