
DatePeriod::createFromISO8601String 함수는 ISO 8601 형식의 날짜 문자열을 DatePeriod 객체로 변환하는 함수입니다. 이 함수는 다음과 같은 예외 상황을 고려해야 합니다.
- 날짜 문자열이 ISO 8601 형식이 아닐 경우 : 이 경우 함수는 InvalidArgumentException 예외를 발생시킵니다.
- 날짜 문자열이 유효하지 않은 경우 : 예를 들어, 2022-02-30 같은 경우는 유효하지 않은 날짜입니다. 이 경우 함수는 InvalidArgumentException 예외를 발생시킵니다.
- 날짜 문자열이 시간 정보를 포함하고 있지 않은 경우 : 이 경우 함수는 DateTime 객체를 생성할 때 DateTime::createFromFormat 함수에서 시간 정보를 생략하는 경우와 동일하게 동작합니다. 즉, 00:00:00 시간을 사용합니다.
- 날짜 문자열이 시간 정보를 포함하고 있지만, 시간 정보가 유효하지 않은 경우 : 예를 들어, 2022-02-30T25:00:00 같은 경우는 유효하지 않은 시간입니다. 이 경우 함수는 InvalidArgumentException 예외를 발생시킵니다.
함수 사용시 생기는 예외 상황을 대비하여 조건을 넣는 방법은 다음과 같습니다.
#hostingforum.kr
php
try {
$datePeriod = DatePeriod::createFromISO8601String('2022-02-28');
} catch (InvalidArgumentException $e) {
echo '유효하지 않은 날짜 문자열입니다.';
}
또한, 날짜 문자열이 유효한지 확인하기 위해 다음과 같은 함수를 사용할 수 있습니다.
#hostingforum.kr
php
function isValidDate($dateString) {
$date = DateTime::createFromFormat('Y-m-d', $dateString);
return $date !== false;
}
if (isValidDate('2022-02-28')) {
$datePeriod = DatePeriod::createFromISO8601String('2022-02-28');
} else {
echo '유효하지 않은 날짜 문자열입니다.';
}
이러한 예외 상황을 대비하여 조건을 넣는다면, DatePeriod::createFromISO8601String 함수를 사용할 때 발생할 수 있는 문제를 미리 예방할 수 있습니다.
2025-07-27 03:03