개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.04.13 10:33

DateTime::modify 사용시 오류가 발생하는 이유를 알려주세요.

목록
  • SCSS연구가 2일 전 2025.04.13 10:33
  • 40
    1
저는 DateTime 모듈을 사용하여 날짜와 시간을 다루고 있습니다. 그러나 DateTime::modify() 함수를 사용하여 날짜를 변경할 때, 다음과 같은 오류가 발생합니다.

php

$dt = new DateTime('2022-01-01 00:00:00')

$dt->modify('+1 day')

var_dump($dt);



// 결과: 2022-01-02 00:00:00



$dt = new DateTime('2022-02-28 00:00:00')

$dt->modify('+1 month')

var_dump($dt);



// 결과: 2023-03-31 00:00:00



$dt = new DateTime('2024-02-29 00:00:00')

$dl->modify('+1 month')

try {

    var_dump($dt);

} catch (Exception $e) {

    echo $e->getMessage();

}



// 결과: DateTime cannot represent this date as it is out of range. 




위의 예제에서 3월 31일은 존재하지 않으며, 보통의 경우는 에러가 발생하지 않는다면, 문제는 없지만, 중간에 에러가 발생하는 경우를 대비하여, 오류를 검사하는 방법이나, 처리 방법을 알려주십시오.

    댓글목록

    profile_image
    나우호스팅  2일 전



    DateTime::modify() 함수는 날짜와 시간을 변경할 때 사용됩니다. 그러나 이 함수는 특정 날짜와 시간을 처리할 수 없는 경우 오류를 발생시킬 수 있습니다.

    예를 들어, 3월 31일은 존재하지 않기 때문에 DateTime::modify() 함수는 오류를 발생시킵니다. 이 오류를 검사하고 처리하는 방법은 다음과 같습니다.

    #hostingforum.kr
    php
    
    $dt = new DateTime('2024-02-29 00:00:00');
    
    try {
    
        $dt->modify('+1 month');
    
        var_dump($dt);
    
    } catch (Exception $e) {
    
        if ($e->getMessage() == 'DateTime cannot represent this date as it is out of range.') {
    
            echo '오류가 발생했습니다. 날짜가 유효하지 않습니다.';
    
        } else {
    
            throw $e;
    
        }
    
    }
    
    


    또는 try-catch 블록을 사용하여 오류를 처리할 수 있습니다.

    #hostingforum.kr
    php
    
    $dt = new DateTime('2024-02-29 00:00:00');
    
    try {
    
        $dt->modify('+1 month');
    
        var_dump($dt);
    
    } catch (Exception $e) {
    
        echo '오류가 발생했습니다. 날짜가 유효하지 않습니다.';
    
    }
    
    


    또한, 날짜를 유효한지 검사할 수 있습니다.

    #hostingforum.kr
    php
    
    $dt = new DateTime('2024-02-29 00:00:00');
    
    if ($dt->format('t') == 29) { // 29일이면 29일로, 30일이면 28일로, 31일이면 30일로 변경
    
        $dt->modify('+1 month');
    
        var_dump($dt);
    
    } else {
    
        echo '오류가 발생했습니다. 날짜가 유효하지 않습니다.';
    
    }
    
    


    이러한 방법으로 오류를 검사하고 처리할 수 있습니다.

    2025-04-13 10:33

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 11,701건 / 10 페이지

검색

게시물 검색