PHP에서 날짜에 3 개월 추가


90

2012-03-26$effectiveDate 날짜를 포함 하는 변수가 있습니다 .

이 날짜에 3 개월을 추가하려고하는데 실패했습니다.

내가 시도한 것은 다음과 같습니다.

$effectiveDate = strtotime("+3 months", strtotime($effectiveDate));

$effectiveDate = strtotime(date("Y-m-d", strtotime($effectiveDate)) . "+3 months");

내가 도대체 ​​뭘 잘못하고있는 겁니까? 두 코드 모두 작동하지 않았습니다.


6
"작동하지 않음"은 무엇을 의미합니까?
Jon

2
나는 1340649000정답으로 답을 얻고 있습니다.
Dogbert 2012 년

당신이 $effectiveDate생각하는 것을 저장하고 있습니까? 그것은 나를 위해 작동합니다 .
Josh

나는 2012-03-26 3 달 추가 2012-06-26에 그 날을 기대하고
user979331

그리고 어느 것이 올바른지 date('Y-m-d', 1340661600)알려줍니다 2012-06-26.
Tchoupi

답변:


194

다음과 같이 변경하면 예상 형식이 제공됩니다.

$effectiveDate = date('Y-m-d', strtotime("+3 months", strtotime($effectiveDate)));

달의 변수를 처리하는 방법? $ months에 개월 수가 포함되어 있습니까? "+ '$months' months"작동하지 않음
HKK

4
$offset = 5; echo date('Y-m-d', strtotime("+$offset months", strtotime('2000-01-01'))); 데모
Cees Timmerman 2014

date ()는 현지화를 사용하지 않습니다. strftime ()이 더 좋습니다.
user706420 2014

2
다음과 같은 날짜에는 작동하지 않습니다 : date ( '2018-01-31', strtotime ( '+ 3 month')). 날짜가 31 일로 끝나고 다음 3 개월이 지나지 않으면 올바른 날짜가 반환되지 않습니다.
Dan H

3
하지 좋은 해결책 - 올바른 값을 반환하지 않습니다 - 단 H가 언급 한 바와 같이
조세프 Vancura

17

이 대답은 정확히이 질문에 대한 것이 아닙니다. 그러나이 질문은 날짜에서 기간을 추가 / 공제하는 방법을 검색 할 수 있기 때문에 추가 할 것입니다.

$date = new DateTime('now');
$date->modify('+3 month'); // or you can use '-90 day' for deduct
$date = $date->format('Y-m-d h:i:s');
echo $date;

5

"작동하지 않았다"는 것은 형식이 지정된 날짜 대신 타임 스탬프를 제공한다는 것을 의미한다고 가정합니다.

$effectiveDate = strtotime("+3 months", strtotime($effectiveDate)); // returns timestamp
echo date('Y-m-d',$effectiveDate); // formatted version

3

날짜를 읽을 수있는 값으로 변환해야합니다. strftime () 또는 date ()를 사용할 수 있습니다.

이 시도:

$effectiveDate = strtotime("+3 months", strtotime($effectiveDate));
$effectiveDate = strftime ( '%Y-%m-%d' , $effectiveDate );
echo $effectiveDate;

작동합니다. 현지화에 사용할 수 있으므로 strftime을 더 잘 사용하는 것이 좋습니다.


3

Tchoupi의 대답은 다음과 같이 strtotime ()에 대한 인수를 연결하여 좀 덜 장황하게 만들 수 있습니다.

$effectiveDate = date('Y-m-d', strtotime($effectiveDate . "+3 months") );

(이것은 마법의 구현 세부 사항에 의존하지만 정당하게 불신하면 언제든지 가서 볼 수 있습니다.)


2

다음이 작동해야합니다, 이것을 시도하십시오 :

$effectiveDate = strtotime("+1 months", strtotime(date("y-m-d")));
echo $time = date("y/m/d", $effectiveDate);

1

다음이 작동합니다.

$d = strtotime("+1 months",strtotime("2015-05-25"));
echo   date("Y-m-d",$d); // This will print **2015-06-25** 

1

n 번째 일, 월, 년 추가

$n = 2;
for ($i = 0; $i <= $n; $i++){
    $d = strtotime("$i days");
    $x = strtotime("$i month");
    $y = strtotime("$i year");
    echo "Dates : ".$dates = date('d M Y', "+$d days");
    echo "<br>";
    echo "Months : ".$months = date('M Y', "+$x months");
    echo '<br>';
    echo "Years : ".$years = date('Y', "+$y years");
    echo '<br>';
}

0

다음이 작동하지만 형식을 변경해야 할 수 있습니다.

echo date('l F jS, Y (m-d-Y)', strtotime('+3 months', strtotime($DateToAdjust)));
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.