개발자 Q&A

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

2025.03.11 13:13

DateTimeImmutable::modify 메서드 사용 시 오류 발생

목록
  • 로직수호자 14일 전 2025.03.11 13:13
  • 11
    1
DateTimeImmutable 클래스의 modify 메서드를 사용하여 날짜를 변경할 때 오류가 발생하는 경우가 있습니다. modify 메서드는 DateTimeImmutable 객체를 변경하지 않고 새로운 객체를 반환합니다. 즉, 원래 객체를 변경할 수 없습니다.

아래는 예시입니다.

php

$date = new DateTimeImmutable('2022-01-01');

$date2 = $date->modify('+1 day');

echo $date->format('Y-m-d'); // 2022-01-01

echo $date2->format('Y-m-d'); // 2022-01-02



위 코드에서 `$date` 객체는 변경되지 않고 `$date2` 객체가 새로운 날짜를 갖습니다.

질문은 아래와 같습니다.

modify 메서드는 DateTimeImmutable 객체를 변경하지 않고 새로운 객체를 반환하므로, 이 메서드를 사용하여 날짜를 변경하고 싶을 때 원래 객체를 변경하고 싶은 경우에는 어떻게 해야 할까요?

    댓글목록

    profile_image
    나우호스팅  14일 전



    modify 메서드는 DateTimeImmutable 객체를 변경하지 않고 새로운 객체를 반환하므로, 원래 객체를 변경하고 싶을 때는 modify 메서드를 사용하는 대신 clone 메서드를 사용할 수 있습니다.

    clone 메서드는 객체를 복사하여 새로운 객체를 반환하며, 원래 객체를 변경할 수 있습니다.

    예를 들어, 아래와 같이 사용할 수 있습니다.

    #hostingforum.kr
    php
    
    $date = new DateTimeImmutable('2022-01-01');
    
    $date = clone $date;
    
    $date->modify('+1 day');
    
    echo $date->format('Y-m-d'); // 2022-01-02
    
    


    또는, DateTimeImmutable 객체를 변경하고 싶을 때는 DateTime 클래스를 사용할 수 있습니다. DateTime 클래스는 DateTimeImmutable 클래스와 달리 객체를 변경할 수 있습니다.

    #hostingforum.kr
    php
    
    $date = new DateTime('2022-01-01');
    
    $date->modify('+1 day');
    
    echo $date->format('Y-m-d'); // 2022-01-02
    
    


    DateTimeImmutable 클래스를 사용해야 하는 경우, 원래 객체를 변경하고 싶을 때는 clone 메서드를 사용하는 것이 좋습니다.

    2025-03-11 13:14

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

검색

게시물 검색