
isLenient() 메소드는 일정을 처리할 때 일자에 대한 유효성을 검사하는 방법을 결정하는 메소드입니다.
isLenient() 메소드가 true인 경우, 일자에 대한 유효성을 검사하지 않습니다. 따라서 2022-02-30과 같은 불편한 날짜를 입력해도, 일정을 2022-02-28으로 설정한 것과 동일한 결과를 반환합니다.
반면에, isLenient() 메소드가 false인 경우, 일자에 대한 유효성을 검사합니다. 따라서 2022-02-30과 같은 불편한 날짜를 입력하면, java.time.DateTimeException 예외가 발생합니다.
예를 들어, 다음 코드를 실행하면, isLenient() 메소드가 true인 경우, 2022-02-30을 입력해도, 일정을 2022-02-28으로 설정한 것과 동일한 결과를 반환합니다.
#hostingforum.kr
java
import java.time.*;
import java.time.chrono.ChronoLocalDate;
public class Main {
public static void main(String[] args) {
// isLenient() 메소드가 true인 경우
IntlCalendar calendar = IntlCalendar.of(2022, 2, 28);
calendar.setLenient(true);
System.out.println(calendar.get(Calendar.YEAR) + "-" + calendar.get(Calendar.MONTH) + "-" + calendar.get(Calendar.DAY_OF_MONTH)); // 2022-02-28
calendar.set(Calendar.YEAR, 2022);
calendar.set(Calendar.MONTH, 2);
calendar.set(Calendar.DAY_OF_MONTH, 30);
System.out.println(calendar.get(Calendar.YEAR) + "-" + calendar.get(Calendar.MONTH) + "-" + calendar.get(Calendar.DAY_OF_MONTH)); // 2022-02-28
}
}
반면에, 다음 코드를 실행하면, isLenient() 메소드가 false인 경우, 2022-02-30과 같은 불편한 날짜를 입력하면, java.time.DateTimeException 예외가 발생합니다.
#hostingforum.kr
java
import java.time.*;
import java.time.chrono.ChronoLocalDate;
public class Main {
public static void main(String[] args) {
// isLenient() 메소드가 false인 경우
IntlCalendar calendar = IntlCalendar.of(2022, 2, 28);
calendar.setLenient(false);
try {
calendar.set(Calendar.YEAR, 2022);
calendar.set(Calendar.MONTH, 2);
calendar.set(Calendar.DAY_OF_MONTH, 30);
System.out.println(calendar.get(Calendar.YEAR) + "-" + calendar.get(Calendar.MONTH) + "-" + calendar.get(Calendar.DAY_OF_MONTH));
} catch (DateTimeException e) {
System.out.println(e.getMessage()); // java.time.DateTimeException: Invalid date '2022-02-30'
}
}
}
2025-04-07 16:14