fork download
  1. <?php
  2.  
  3. function shift_span($start, $end)
  4. {
  5. $time_diff = time_diff($start, $end);
  6. $time_diff = $time_diff['hours'];
  7.  
  8. # ignore minutes, safe after we calculated difference
  9. $start = (int) $start;
  10. $end = (int) $end;
  11.  
  12. if($start + $time_diff <= 24)
  13. return array($time_diff);
  14.  
  15. return array(
  16. abs($end - $time_diff),
  17. abs(($start + $time_diff) % 24)
  18. );
  19. }
  20.  
  21. function time_diff($start, $end)
  22. {
  23. # do not ignore minutes
  24. $start = strtotime($start);
  25. $end = strtotime($end);
  26.  
  27. $diff = abs($start - $end);
  28. $hours = floor($diff / 3600);
  29. $minutes = ($diff - ($hours * 3600)) / 60;
  30.  
  31. $hours = $start > $end? 24 - $hours: $hours;
  32.  
  33. return compact('hours', 'minutes');
  34. }
  35.  
  36. $start = '18:00:00';
  37. $end = '03:00:00';
  38.  
  39. var_dump(shift_span($start, $end));
Success #stdin #stdout 0.02s 13112KB
stdin
Standard input is empty
stdout
array(2) {
  [0]=>
  float(6)
  [1]=>
  int(3)
}