'How to get the total hour from starting time to end time in php

How can I get the total hour from start time to end time.

   $start_time = '11:00:00 PM'; // as of 07/08/2013
   $end_time   = '01:00:00 AM'; // as of 08/08/2013

Then output should be:

   $total = '02:00:00'; // 12 hour format


Solution 1:[1]

You can convert the date strings to time values, then subtract to get the difference in seconds between the two, then simply divide by 3600 to get the difference in hours:

$t1 = strtotime('2013-08-07 23:00:00');
$t2 = strtotime('2013-08-08 01:00:00');
$differenceInSeconds = $t2 - $t1;
$differenceInHours = $differenceInSeconds / 3600;

Solution 2:[2]

If you want to find out the total time and you only have time values go for this. //24 hour format

    for ($i = 0; $i < count($array); $i++) { //array contains your sorted times like [H:i]
        $a = $array[$i]. " " .date("Y/m/d");
        $array[$i] = $a;
    }
    
    $total=0;
    for ($i = count($array); $i>1; $i--){
        if ($array[$i-1] < $array[$i-2]){
            $array[$i-1] = strtotime("+1 day", strtotime($array[$i-1]));
            $z = "a";
        }
        $a = strtotime($array[$i-1]);
        $b = strtotime($array[$i-2]);
        $diff = $a - $b;    
        $hours = ceil($diff / (24*60));
        $total += date("H", $hours);
    }
if ($z == "a"){
    $total += date("H", ceil(strtotime($array[0]) / (24*60)));
}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 mti2935
Solution 2