2014-02-10 2 views
0

나는 두 시간 동안의 작업을 vars에 저장하려고합니다. 먼저 밀리 초 단위로 변환하여 작업을 만든 다음 다시 읽을 수있는 형식으로 변환합니다. 그것은 효과가있는 것으로 보이지만 마지막 숫자는 옳지 않습니다. 이 예제에서는 차이점 1:30:00을 제공합니다. 왜 누군가가 설명 할 수 있습니까?문자열에서 밀리 초 및 뒤로

// I have two hours that come from a MySql database and I store in a var: 
$start= "16:00:00"; 
$end= "16:30:00"; 

// I convert to milliseconds and rest: 
$startMili = strtotime($start); 
$endMili = strtotime($end); 
$dif = $endMili - $startMili ; 

// convert to something readable: 
echo "<br><br> diference: "; 
$readable = date("H:i:s", $dif); 
echo $readable; 
+0

_strtotime_ 및 _DATE_ 기능은 절대 타임 스탬프의 간격에 대한 의미있는 예는 아래를 참조 strtotime으로의 날짜 시간을 사용할 수도 있습니다! 추가 시간은 시간대 설정 (_date_default_timezone_set_)에서 나올 수 있습니다. 어쩌면 SQL 쿼리에서 _TIMEDIFF_ 함수를 직접 사용할 수 있습니까? –

+0

귀하의 코드를 시도 할 때 0:30:00 – Perry

+0

@ Perry의 올바른 결과를 얻습니다. 이상합니다. Piotr이 말한 것처럼 아마도 시간대입니다. 나는 바르셀로나에있다. 어디야? – Nrc

답변

1

대신

$datetime1 = new DateTime($start, new DateTimeZone('Europe/Amsterdam')); 
$datetime2 = new DateTime($end, new DateTimeZone('Europe/Amsterdam')); 
$interval = $datetime1->diff($datetime2); 
echo $interval->format('%H:%i:%s');