Hi

I am trying to get the number of hours and minutes between
two time time stamps.

The expected results should be 1:59 (h:mm) instead I am getting 1:58 (h:mm).
What is wrong with my approach?

Is it also possible to use a built in php function so I don't have to
divide by 60 to convert to hours and minutes?

<?

$end_time = "2008-09-05 20:59:13";
$start_time = "2008-09-05 19:00:16";

$end = date("h:i:s",strtotime($end_time));
$start = date("h:i:s",strtotime($start_time));
$diff = strtotime($end)  - strtotime($start);

//convert to min and sec
$convert_min = $diff/60;
$convert_sec = $diff % 60;//seconds

//convert to hours and min
$convert_hr = floor($convert_min/60);//hours
$remainder = floor($convert_min % 60);//minutes

$total_visit =  $convert_hr.":".$remainder; 

?>

Recommended Answers

Check out the documentation on the date_sub function - I think this will do what you are after. Here is a link: http://au2.php.net/manual/en/function.date-sub.php

Jump to Post

All 2 Replies

I am getting the correct hours and minutes by removing the seconds.
E.g. date("h:i",strtotime($end_time)).
I am still open to a more efficient way to accomplish this task.

<?

$end_time = "2008-09-05 20:59:13";
$start_time = "2008-09-05 19:00:16";

$end = date("h:i",strtotime($end_time));
$start = date("h:i",strtotime($start_time));
$diff = strtotime($end)  - strtotime($start);

//convert to min and sec
$convert_min = $diff/60;
$convert_sec = $diff % 60;//seconds

//convert to hours and min
$convert_hr = floor($convert_min/60);//hours
$remainder = floor($convert_min % 60);//minutes

$total_visit =  $convert_hr.":".$remainder; 

?>
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts learning and sharing knowledge.