[php] 날짜를 1 개월 씩 증가

다음 형식의 날짜가 있다고 가정 해 보겠습니다. 2010-12-11 (연-월-일)

PHP를 사용하여 날짜를 한 달씩 늘리고, 필요한 경우 연도를 자동으로 늘리기를 원합니다 (예 : 2012 년 12 월부터 2013 년 1 월까지 증가).

문안 인사.



답변

$time = strtotime("2010.12.11");
$final = date("Y-m-d", strtotime("+1 month", $time));

// Finally you will have the date you're looking for.


답변

월간주기 (더하기 개월, 빼기 1 일)를 제외하고는 유사한 기능이 필요했습니다. 잠시 동안 검색 한 후이 플러그 앤 플레이 솔루션을 만들 수있었습니다.

function add_months($months, DateTime $dateObject)
    {
        $next = new DateTime($dateObject->format('Y-m-d'));
        $next->modify('last day of +'.$months.' month');

        if($dateObject->format('d') > $next->format('d')) {
            return $dateObject->diff($next);
        } else {
            return new DateInterval('P'.$months.'M');
        }
    }

function endCycle($d1, $months)
    {
        $date = new DateTime($d1);

        // call second function to add the months
        $newDate = $date->add(add_months($months, $date));

        // goes back 1 day from date, remove if you want same day of month
        $newDate->sub(new DateInterval('P1D'));

        //formats final date to Y-m-d form
        $dateReturned = $newDate->format('Y-m-d');

        return $dateReturned;
    }

예:

$startDate = '2014-06-03'; // select date in Y-m-d format
$nMonths = 1; // choose how many months you want to move ahead
$final = endCycle($startDate, $nMonths); // output: 2014-07-02


답변

사용 DateTime::add.

$start = new DateTime("2010-12-11", new DateTimeZone("UTC"));
$month_later = clone $start;
$month_later->add(new DateInterval("P1M"));

add는 원치 않는 원본 객체를 수정하기 때문에 복제를 사용했습니다 .


답변

strtotime( "+1 month", strtotime( $time ) );

이것은 날짜 함수와 함께 사용할 수있는 타임 스탬프를 반환합니다.


답변

(date('d') > 28) ? date("mdY", strtotime("last day of next month")) : date("mdY", strtotime("+1 month"));

이것은 2 월과 다른 31 일의 달을 보상합니다. 물론 ‘다음 달 오늘’ 상대 날짜 형식 (슬프게도 작동하지 않음, 아래 참조)을 더 정확하게 확인하기 위해 더 많은 검사를 수행 할 수 있으며 DateTime을 사용할 수도 있습니다.

모두 DateInterval('P1M')strtotime("+1 month")본질적으로 맹목적으로 다음 달에 관계없이 일수 31 일 추가됩니다.

  • 2010-01-31 => 3 월 3 일
  • 2012-01-31 => 3 월 2 일 (윤년)

답변

다음 DateTime::modify과 같이 사용할 수 있습니다 .

$date = new DateTime('2010-12-11');
$date->modify('+1 month');

문서 참조 :

http://php.net/manual/fr/datetime.modify.php

http://php.net/manual/fr/class.datetime.php


답변

이 방법으로 사용합니다.

 $occDate='2014-01-28';
 $forOdNextMonth= date('m', strtotime("+1 month", strtotime($occDate)));
//Output:- $forOdNextMonth=02


/*****************more example****************/
$occDate='2014-12-28';

$forOdNextMonth= date('m', strtotime("+1 month", strtotime($occDate)));
//Output:- $forOdNextMonth=01

//***********************wrong way**********************************//
$forOdNextMonth= date('m', strtotime("+1 month", $occDate));
  //Output:- $forOdNextMonth=02; //instead of $forOdNextMonth=01;
//******************************************************************//