Lewis M Hackfath
Lewis M Hackfath

Reputation: 131

PHP Calculate Exact number of hours minutes and seconds between two timestamps

I have two Timestamps
2016-01-01 00:00:00
2016-01-02 23:59:59

Using PHP how can I calculate the number of hours and minutes between the two times and get the result as a decimal with 2 places after the .

currently I have this:

    $Start = new DateTime($StartTime);
    $Finish = new DateTime ($FinishTime);
    $Interval = date_diff($Start,$Finish);
    $Hours = $Interval->format('%h.%i');

But the result is incorrect if the user starts the timer on Day 1 and finishes on day 2.

Upvotes: 1

Views: 2863

Answers (3)

deepwaterooo
deepwaterooo

Reputation: 1

Try this.

$Hours = $Interval->format('%a.%h.%i');

Upvotes: 0

user2182349
user2182349

Reputation: 9782

You could multiply the number of days by 24 to convert them to hours, then sum the hours and concatenate the minutes:

$start = new DateTime('2016-01-01 00:00:00');
$end = new DateTime('2016-01-02 23:59:59');
$interval = $end->diff($start);
$days = $interval->format('%d');
$hours = 24 * $days + $interval->format('%h');
echo $hours.':'.$interval->format('%i');

Upvotes: 3

larsAnders
larsAnders

Reputation: 3813

You could format the DateTime as a UNIX timestamp, and then simply subtract to get the total seconds, and format the output with gmdate().

$Start = new DateTime($StartTime);
$Finish = new DateTime ($FinishTime);
$Interval = $Start->format('U') - $Finish->format('U');
$Hours = gmdate("H:i:s", $Interval); 

Upvotes: 0

Related Questions