"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 월말을 초과하지 않고 PHP에서 날짜에 월을 추가하는 방법은 무엇입니까?

월말을 초과하지 않고 PHP에서 날짜에 월을 추가하는 방법은 무엇입니까?

2024년 11월 13일에 게시됨
검색:348

How to Add Months to a Date in PHP Without Exceeding Month End?

월말을 초과하지 않고 날짜에 월 추가

소개

날짜를 조작할 때 실수로 월말이 초과되는 상황을 피하는 것이 중요합니다. 이 문서에서는 대상 월의 범위 내에 유지하면서 특정 날짜에 월을 추가하는 안정적인 접근 방식을 살펴봅니다.

문제 설명

주어진 PHP 함수의 목표는 월말을 초과하지 않고 지정된 개월 수부터 날짜까지. 추가로 인해 유출이 발생할 경우 함수는 결과를 월의 마지막 날로 조정해야 합니다.

해결책

원하는 기능을 달성하려면 다음 단계를 활용할 수 있습니다.

  1. new DateTime($date_str)을 사용하여 입력 문자열 날짜를 DateTime 객체로 변환합니다.
  2. 다음을 사용하여 수정하기 전의 날짜를 추출합니다. $start_day = $date->format('j').
  3. $date->modify(" {$months} ​​Month")를 사용하여 그에 따라 월을 증가시킵니다.
  4. 일을 구합니다. $end_day = $date->format('j').
  5. $start_day와 $end_day를 비교하세요. 다르면 월말이 초과되었음을 나타냅니다. 이 경우 $date->modify('지난달의 마지막 날')을 사용하여 날짜를 이전 달의 마지막 날로 조정합니다.

구현

function add($date_str, $months)
{
    $date = new DateTime($date_str);

    $start_day = $date->format('j');

    $date->modify(" {$months} month");

    $end_day = $date->format('j');

    if ($start_day != $end_day)
    {
        $date->modify('last day of last month');
    }

    return $date;
}

// Sample tests
$result = add('2011-01-28', 1);   // 2011-02-28
$result = add('2011-01-31', 3);   // 2011-04-30
$result = add('2011-01-30', 13);  // 2012-02-29
$result = add('2011-10-31', 1);   // 2011-11-30
$result = add('2011-12-30', 1);   // 2011-02-28

결론

이 접근 방식을 따르면 월말 제약 조건을 준수하면서 PHP의 날짜에 자신있게 월을 추가할 수 있으므로 결과가 날짜를 정확하게 나타내는지 확인할 수 있습니다. 의도된 기간.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3