2012-03-05 2 views
0

나는 내 문제에 대한 답을 찾기 위해 노력 해왔다. 하나는 찾지 못했고, $ start에 대한 입력 날짜가 주어진. 그러나 시간이없는 날짜 필드를 사용하여 동일한 작업을 수행하면 오류가 발생합니다.PHP를 사용하여 필드 날짜와 현재 날짜 사이의 일 수를 찾는 방법

<?php 
    $start = new DateTime('2011-10-12'); 
    $today = new DateTime(); 
    $days = round(abs($today->format('U') - $start->format('U'))/(60*60*24)); 
    echo $days; 
    ?> 

146을 메아리.

그러나 나는 테이블 필드 등으로 $가을 시작 대체하는 경우 :

$start = $demurage2[DC_date]; 
    echo $start; 
    $today = new DateTime(); 
    $dcdate = round(abs($today->format('U') - $start->format('U'))/(60*60*24)); 
    echo $dcdate; 

오류 : 치명적인 오류 : 비 개체의 멤버 함수 형식()에서에 전화 나는 단지 $을 시작 에코 시도 490

라인에 /home/tech17/public_html/svga/invoice-detail.php, 그것은 테이블에서 올바른 날짜를 보여줍니다 : 2012-01-17.

+1

두 번째 예의 $ start의 내용은 무엇입니까? DateTime 객체가 될 것으로 기대하고 있지만 MySQL에서 바로 나온 경우 YYYY-MM-DD 형식의 문자열 일 가능성이 큽니다. – liquorvicar

+0

$ 시작시 반향, 테이블에서 정확한 날짜 값 제공 : 2012-01-17, 문자열인지 확실하지 않습니다. 이 경우 다시 변환해야합니까?, 끝날 때 며칠 만에해야합니다. – user1114409

답변

0

두 번째 예제에서 $ start는 DateTime 클래스의 개체가 아니므로 당연히 작동하지 않습니다. 날짜는 어떻게 저장됩니까? 기술적으로 이것은 효과가 있을지 모르지만이 $ demurage2 [ 'DC_date'] 값이 무엇인지에 크게 의존합니다.

$start=new DateTime($demurage2['DC_date']); 
+0

안녕하세요. Kristovaher, 네, 이것은 첫 번째 사례에서 liquorvicar가 올바르게 말한대로 작동합니다. 고마워. – user1114409

관련 문제