Subtract time in PHP
46,602
Solution 1
A bit nicer is the following:
$a = new DateTime('08:00'); $b = new DateTime('16:00'); $interval = $a->diff($b); echo $interval->format("%H");
That will give you the difference in hours.
Solution 2
If you get valid date strings, you can use this:
$workingHours = (strtotime($end) - strtotime($start)) / 3600;
This will give you the hours a person has been working.
Solution 3
Another solution would be to go through the Unix-timestamp integer value difference (in seconds).
<?php
$start = strtotime('10-09-2019 12:01:00');
$end = strtotime('12-09-2019 13:16:00');
$hours = intval(($end - $start)/3600);
echo $hours.' hours'; //in hours
//If you want it in minutes, you can divide the difference by 60 instead
$mins = (int)(($end - $start) / 60);
echo $mins.' minutues'.'<br>';
?>
This solution would be a better one if your original dates are stored in Unix-timestamp format.
Related videos on Youtube
Author by
PsychoX
Updated on September 27, 2020Comments
-
PsychoX over 3 years
I have been looking for an answer for a few hours now, but I can't find one.
I'm writing a simple
script
. The user sets their work start and end time. So, for example, somebody is working from 8:00 to 16:00. How can I subtract this time to see how long the person has been working?I was experimenting with
strtotime();
but without success... -
jm_toball about 13 yearsYou can divide by 60 instead of 3600 to get minutes and divide by 60 and round down (floor()) to get full hours and get the remainder of minutes%60 to get the minutes.
-
mjspier about 13 yearsdate ( 'H:i' , $workingHours ). I would not recommend strtottime here as strtotime gives you back the unix timestamp of a date.
-
Aditya M P over 10 yearsI wonder if it can convert the entire interval into seconds? ->format('%S') just gave me the seconds part of the interval output, not the total calculated seconds elapsed.
-
Jason Aller over 4 yearsWelcome to Stack Overflow. When answering an eight year old question with existing answers it is useful to point out what new aspect of the question your answer addresses. Code only answers can almost always be improved by adding explanation including why and how the code solves the problem.