finding out difference between two times

前端 未结 7 2028
醉话见心
醉话见心 2021-01-14 04:03

I wrote the following code to determine the amount of time that employees spend on a task:

$time1 = $row_TicketRS[\'OpenTime\'];
$time2= $row_TicketRS[\'Clos         


        
7条回答
  •  心在旅途
    2021-01-14 04:36

    Your use of floor is why you are getting only 1 hour for those inputs. Those inputs result in 1.7 hours if you keep the answer as a float. floor automatically rounds down to the lower integer value. Check out http://php.net/manual/en/function.floor.php for more info.

    $t1 = strtotime('09:19:00');
    $t2 = strtotime('11:01:00');
    $hours = ($t2 - $t1)/3600;   //$hours = 1.7
    

    If you want a more fine-grained time difference, you can flesh it out...

    echo floor($hours) . ':' . ( ($hours-floor($hours)) * 60 );  // Outputs "1:42"
    

    UPDATE:

    I just noted your comments on Long Ears' answer. Please check my comments above again, they are correct. Inputting values of '09:11:00' and '09:33:00' results in 0 hours (22 minutes).

    If you input those values and got 4 hours, you likely have a decimal error in your math. Using '09:11' to '09:33', the result is .367 hours. If you divided the strtotime results by 360 instead of by 3600, you would get result 3.67 hours (or 4 hours, depending on your rounding method).

    strtotime converts your time to an int value representing number of seconds since Unix epoch. Since you convert both values to seconds, and then subtract the values from each other, the resulting value is a quantity of seconds. There are 3600 seconds in 1 hour.

提交回复
热议问题