2012-02-12 4 views
0

현재 G : i 형식의 시간 비교 목록이 있습니다.G : i 형식의 시간을 추가하십시오.

나는 그들을 모두 추가하려고하지만 다시 시도 할 때 24로 다시 0으로 맞 춥니 다. 어떻게 결과를 얻을 수 있습니까? 예 : 54:45?

미리 감사드립니다.

date_default_timezone_set('UTC'); 
$username = $row['username']; 
$begintime = $row['begintime']; 
$endtime = $row['endtime']; 

$begintime = new DateTime($begintime); 
$begintime = $begintime->format('H:i'); 

$endtime = new DateTime($endtime); 
$endtime = $endtime->format('H:i'); 

$difference = strtotime($endtime) - strtotime($begintime); 
$difference = date('G:i', $total); 
$total_hours += $difference; 
+0

코드를 보여주십시오. 우리는 무슨 일이 일어날 지 추측 할 수 있지만, 코드를 보지 않고 어둠 속에서 슛을 날릴 것입니다. – JJJ

+0

내 코드 @Juhana가 추가되었습니다. – Sino

답변

1

절대 시간을 포맷하는 데 date()을 사용하지 마십시오. $difference 초 단위의 시간 차이를 포함하기 때문에, 그것은 단순한를 arithmetics 단지 문제 :

$hours = floor($difference/60/60); 
$minutes = ($difference/60) % 60; 

echo "$hours:$minutes"; 
+0

이것은 내 답변에 더 가깝지만, 2 시간이면 2시 30 분에 나옵니다. 이건 내게 5시를주지 않을거야 .. – Sino

+0

왜 안돼? 만약 당신이 여전히'$ total_hours + = $ difference'를하고 있다면 ... 그 일을 그만 두십시오. 먼저 *, *, * 형식을 추가해야합니다. – JJJ

+0

나는 분을 60으로 나눈 다음 시간을 더하고 나머지 분을 남은 분으로 유지함으로써 해결했습니다. 고마워요 ~ 주니어 – Sino

0

할 수 있습니다 실제로 임의의 날짜 차이를 추가하여 절대 시간을 일에 "트릭"DateTime :

$foo = new DateTime(); 
$bar = new DateTime(); 

foreach ($intervals as $interval) { 
    $begin = $interval['begin']; 
    $end = $interval['end']; 
    $foo->add($begin->diff($end)); 
} 

// Will be the total time of all intervals, as an interval itself 
$total = $foo->diff($bar); 
관련 문제