다음 형식의 날짜가 있다고 가정 해 보겠습니다. 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');
문서 참조 :
답변
이 방법으로 사용합니다.
$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;
//******************************************************************//