[java] Joda-Time으로 특정 날짜 범위 내에서 특정 시간에 해당하는 날짜 구하기
Joda-Time은 자바에서 날짜와 시간을 처리하기 위한 유용한 라이브러리입니다. 이 라이브러리를 사용하여 특정 날짜 범위 내에서 특정 시간에 해당하는 날짜를 구하는 방법에 대해 알아보겠습니다.
1. Joda-Time 라이브러리 추가
먼저, 프로젝트에 Joda-Time 라이브러리를 추가해야 합니다. 프로젝트의 pom.xml
파일에 다음 의존성을 추가해주세요.
<dependencies>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.10.10</version>
</dependency>
</dependencies>
또는 Gradle을 사용하신다면, 프로젝트의 build.gradle
파일에 다음 의존성을 추가해주세요.
dependencies {
implementation 'joda-time:joda-time:2.10.10'
}
2. 특정 날짜 범위 내에서 특정 시간에 해당하는 날짜 구하기
이제 Joda-Time을 사용하여 특정 날짜 범위 내에서 특정 시간에 해당하는 날짜를 구하는 방법을 알아보겠습니다. 아래 예제 코드를 참고해주세요.
import org.joda.time.DateTime;
import org.joda.time.LocalDate;
import org.joda.time.LocalTime;
public class DateUtils {
public static LocalDate getDateAtSpecificTime(LocalDate startDate, LocalDate endDate, LocalTime specificTime) {
LocalDate currentDate = startDate;
while (currentDate.isBefore(endDate)) {
DateTime dateTime = currentDate.toDateTime(specificTime);
if (dateTime.isAfterNow()) {
return currentDate;
}
currentDate = currentDate.plusDays(1);
}
return null;
}
public static void main(String[] args) {
LocalDate startDate = new LocalDate(2021, 1, 1);
LocalDate endDate = new LocalDate(2021, 12, 31);
LocalTime specificTime = new LocalTime(14, 0); // 2시
LocalDate result = getDateAtSpecificTime(startDate, endDate, specificTime);
System.out.println("특정 시간에 해당하는 날짜: " + result);
}
}
위 코드에서 getDateAtSpecificTime
메소드는 주어진 시작 날짜(startDate
), 종료 날짜(endDate
), 특정 시간(specificTime
)을 기준으로 특정 시간에 해당하는 첫 번째 날짜를 반환합니다. 주어진 범위 내에 특정 시간에 해당하는 날짜가 없을 경우 null
을 반환합니다.
위의 예제 코드에서는 2021년 1월 1일부터 2021년 12월 31일까지의 범위 내에 14시(2시)에 해당하는 날짜를 구하는 방법을 보여주고 있습니다.