
DateTime 클래스의 setDate 메서드는 날짜를 설정하는 데 사용되며, 인수로 받을 수 있는 날짜 형식은 다음과 같습니다.
- 연도, 월, 일을 포함하는 형식 (예: 2022-01-01)
- 연도, 월, 일, 시각, 분, 초를 포함하는 형식 (예: 2022-01-01T00:00:00)
- 연도, 월, 일, 시각, 분, 초, 시간대 오프셋을 포함하는 형식 (예: 2022-01-01T00:00:00+09:00)
인수로 받은 날짜가 유효한지 검사하는 방법은 다음과 같습니다.
- 연도는 1 이상 9999 이하의 정수여야 합니다.
- 월은 1 이상 12 이하의 정수여야 합니다.
- 일은 1 이상 31 이하의 정수여야 합니다.
- 시각은 0 이상 23 이하의 정수여야 합니다.
- 분은 0 이상 59 이하의 정수여야 합니다.
- 초는 0 이상 59 이하의 정수여야 합니다.
- 시간대 오프셋은 -12 이상 12 이하의 정수여야 합니다.
예를 들어, 2022-01-01T00:00:00+09:00 형식의 날짜를 인수로 받는다면, setDate 메서드는 다음과 같이 동작합니다.
1. 현재 날짜와 시간을 기준으로 인수로 받은 날짜를 검사합니다.
2. 연도, 월, 일, 시각, 분, 초, 시간대 오프셋을 검사합니다.
3. 유효한 날짜인지 확인합니다.
4. 유효한 날짜라면 setDate 메서드는 날짜를 설정합니다.
예제 코드는 다음과 같습니다.
#hostingforum.kr
php
$date = new DateTime('2022-01-01T00:00:00+09:00');
echo $date->format('Y-m-d H:i:sP') . "n"; // 2022-01-01 00:00:00+09:00
// 유효한 날짜를 설정
$date->setDate(2022, 1, 1);
echo $date->format('Y-m-d H:i:sP') . "n"; // 2022-01-01 00:00:00+09:00
// 유효하지 않은 날짜를 설정
$date->setDate(2022, 13, 1);
echo $date->format('Y-m-d H:i:sP') . "n"; // 2022-01-01 00:00:00+09:00 (유효하지 않은 날짜는 설정되지 않습니다.)
위 예제 코드에서, 유효하지 않은 날짜를 설정하려고 할 때, setDate 메서드는 유효한 날짜를 설정하지 않습니다.
2025-08-06 18:50