2014-07-20 3 views
0

많은 종류의 동일한 문제가 있지만 필요한 것은 아무것도 없다는 것을 알고 있습니다.PHP의 두 번 차이 (날짜 없음)

저는 H.MM (3.25 - 3:25, 3:15) 또는 HH.MM (22.75 - 22:45)의 형태로 두 번 있습니다.

시작 시간과 종료 시간의 차이를 시간 단위로 계산해야합니다. 나는 데이트가 없다.

내 시간은 (그래서 당신은 확인하실 수 있습니다) :

  1. 15.25 -> 23.75
  2. 10.0 -> 22.0
  3. 22.5 -> 8.0
  4. 20.0 -> 10.0
  5. 9.0 - > 17.0
  6. 23.0 -> 6.0

내 머리가 이미 불 탔어.

도움 주셔서 감사합니다.

+0

당신은 그것이로 실행하는거야 문제는 15.25 18.25에 3.0 또는 27.0 인 경우 당신은 시간의 최대 수 (초과하지 않는 한, 알 수없는 예를 들어, 24 보다 낮은). 또한, 가장 쉬운 방법은 첫 번째에 대한 날짜를 shim하고 그걸 오프셋하는 것입니다. 그 날짜에 당신이 쓸모가없는 날짜. –

+0

특정 문제는 더 많은 제약이 필요할 수 있습니다. 예를 들어, 오후 11 시부 터 6시 사이의 차이는 그날 _earlier_가 아닌 6 시가 다음 날에있을 때와 다릅니다. –

+0

예. 그게 문제 야. 변화하는 날이야. 큰 nr이 두 번째 경우에는 daychange가 있습니다. 따라서 15.25에서 18.25는 3.0입니다. – HenerH

답변

1
$times = array(
    array(15.25,23.75), 
    array(10.0,22.0), 
    array(22.5,8.0), 
    array(20.0,10.0), 
    array(9.0,17.0), 
    array(23.0,6.0), 
); 

foreach($times as $time) { 

    $end = $time[1]; 

    if($time[1] < $time[0]) { 
     $end += 24; 
    } 

    $diff = $end - $time[0]; 
    $hours = floor($diff); 
    $minutes = ($diff - $hours) * 60; 

    if(strlen($minutes) < 2) 
     $minutes .= '0'; 

    print $time[0] . ' -> ' . $time[1] 
    . " $hours:$minutes\n"; 
} 

Demo

+0

조금 수정해야하지만 매우 큰 감사합니다. – HenerH

+0

하하. 방금 필요한 내용은 다음과 같습니다. if ($ time [1] <$ time [0]) { $ end + = 24; } – HenerH