2012-12-20 3 views
7

나는 현재 날짜로부터 6 개월 만에 달을 얻으려고합니다. 내가 사용하려고했습니다PHP에서 6 개월 추가

:

date('d', strtotime('+6 month', time()));

그러나이 작동하지 않는 것은 항상 01 반환합니다. 이 작업을 수행하는 더 좋은 방법이 있습니까?

감사합니다.

+0

확인)'두 번째 매개 변수를 생략하면 기본적으로 현재 시간이 사용됩니다. 또한,'strtotime()'은 절대 시간이 아니기 때문에 달을 계산하지 않을 것이라고 생각합니다. 일 수는 월 단위로 다릅니다. –

답변

18

내가 사용하는 것이 훨씬 쉽게 DateTime 작업 찾기 :

$datetime = new DateTime(); 
$datetime->modify('+6 months'); 
echo $datetime->format('d'); 

또는

$datetime = new DateTime(); 
$datetime->add(new DateInterval('P6M')); 
echo $datetime->format('d'); 

또는

PHP 버전 5.4+

echo (new DateTime())->add(new DateInterval('P6M'))->format('d'); 
+0

완벽한 작품, 고마워요! – dzm

2

여전히 한 strtotime를 사용하고자하는 경우와 DateTime() 객체와 달리 date 함수는 다음과 같이 작동합니다.

date('d', strtotime('+6 months')); 
0

기본값이기 때문에 time()을 strtotime에 전달할 필요가 없습니다.

그 외에도 접근 방법은 정확합니다. 단, date('d') (당일 치기)은 date('m')이 아니므로 echo date('m', strtotime('+6 month'));을 사용해야합니다.

그럼에도 불구하고 John이 설명한 DateTime 방법을 사용하는 것이 좋습니다. DateTime은 "오래된"날짜 기능보다 몇 가지 장점이 있습니다. 예를 들어, UNIX 빅뱅이 32 비트 정수에 더 이상 적합하지 않기 때문에 초가 작동을 멈추지 않습니다.

1

당신은 DateInterval 클래스와 관련하여 DateTime 클래스를 사용할 수 있습니다 :

<?php 
$date = new DateTime(); 
$date->add(new DateInterval('P6M')); 

echo $date->format('d M Y'); 
0

당신은 simpleDate 클래스를 사용할 수 있습니다

include('../code/simpleDate.php'); 
$date = new simpleDate(); 
echo $date->now()->addMonth(6)->get(); 

은 (여담 ', strtotime으로 같이 tutorials here.

관련 문제