2011-02-12 8 views
3

는 다음 테스트 케이스를 고려DateTime :: diff가이 날짜 사이에 0 일을 반환하는 이유는 무엇입니까?

$start = new DateTime("2011-02-25"); 
$end = new DateTime("2011-03-25"); 

$interval = $end->diff($start); 


echo "INTERVAL = ".$interval->format("%d"); // Should give me the 
              // interval in days, right? 
echo "START = ".$start->format("Y-m-d"); 
echo "END = ".$end->format("Y-m-d"); 

결과는 다음과 같습니다

INTERVAL = 0 <---------- WTF???? 
START = 2011-02-25 
END = 2011-03-25 

diff() 월 25 일, 2011 년 3 월 (25) 2011 년 사이의 기간 0 일이라고 주장하는 것 같다!

나는 뭔가를 내려야 만합니다. 하지만 무엇?

+0

또한 나는 같은 순서로'$ interval = $ start-> diff ($ end);'를 뒤집어 썼다. –

+2

이 말을하는 것이 놀랍지 만 설명서의 예제 # 3을 참조하십시오. http://php.net/manual/en/dateinterval.format.php :) – deceze

+0

@deceze 예, 이제 알았습니다. :) 나는 아직도'd'가 정직하기로되어있는 것을 이해하는데 어려움을 겪고있다. 어쨌든, 그것은 작동합니다! (** 편집 ** 이제는 이해합니다 : 달력 일의 차이입니다.) –

답변

7

형식 코드 'a'을 사용해야합니다. d은 실제 일수가 아닌 diff의 일 수입니다. dateinterval 객체에서 days이 해당 필드입니다. 당신의 예제에서, 당신은 볼 것이다 m = 1

+0

Arrgh. 나는 그것을 이해하지 못했다. 감사! (5 분 안에 받아 들일 수 있음) –

+0

이 문제를 한 시간 이상보고 있습니다 ... 해결책을 가져 주셔서 감사합니다! – vicenteherrera

관련 문제