2014-05-22 4 views
0

직원이 시계 아웃하고 시계 아웃 할 수있는 작업 표 페이지를 만들려고합니다. 시계 아웃 후에는 총 시간이 계산되므로 time2 (시계 아웃) - time1 (시계 인)입니다. 나는 그저 그 자체로 차이를 만드는 법을 알고 싶고 그 나머지를하는 법을 알아낼 수 있기 때문에 여기에 정해진 시간을 사용했다. 내 코드와 결과를 제공했습니다. 시간 문제를 해결할 수 있다면 코드와 결과를 게시하면 감사하겠습니다. 누군가 제가 54 행에서 abs()를 사용한다고 제안했지만 여전히 작동하지 않습니다. 시간 내 주셔서 감사합니다.두 개의 시간 소인 시간의 차이를 계산하는 방법은 무엇입니까?

$time1 = strtotime('09:10:04'); 
$time2 = strtotime('12:16:06'); 
$diff = $time2 - $time1; 
echo "Start Time: ".date('h:i:s', $time1)."<br>"; 
echo "End Time: ".date('h:i:s', $time2)."<br>"; 
echo "Total hours: " . date('h:i:s', $diff); 

시작 시간 : 9시 10분 4초

종료 시간 : 12시 16분 6초

총 시간 : 10시 6분 2초

답변

0

시간대 +7에 살고 있기 때문에 문제가 발생했다고 생각합니다. strtotime()을 사용하여 시간을 추출하면 두 시간이 모두 UTC로 바뀝니다. t2-t1을 뺄 때 모든 시간대 이동이 0이됩니다.

그러나 결과를 인쇄 할 때 date()는 현지 시간대 인 에 오프셋을 추가하고 +7 시간을 인쇄합니다.

는 대한이, 그냥 프로그램 처음에 한 번 쓰기를 부가 보존 :

date_default_timezone_set('UTC'); 
+0

예, 내가 사는 않는다 "(UTC-05 : 00) 동부 표준시 (미국과 캐나다)". 이것은 내가 코딩 할 때 무시한 것입니다. 그 행은 나의 문제를 해결했고 타임 스탬프를 다룰 때 시간대를 더 잘 알게했다. 고맙습니다. – user3666355

+0

AM, PM주기 시간 문제 때문에 시간대를 추측하지 못했습니다. +7 + (-5)는 12입니다. – maxihatop

0

내가이

에 대한 DateTime을 좋아한다
$time1 = new DateTime('09:10:04'); 
$time2 = new DateTime('12:16:06'); 
$diff = $time1->diff($time2); 
echo $diff->format('%h hours'); 
관련 문제