Voorbeeld code
$estimated_time = '40:30';
$completed_time = '20:45';
// list the times
list($hours1, $minutes1) = explode(':', $estimated_time);
list($hours2, $minutes2) = explode(':', $completed_time);
// mktime
$t1 = mktime($hours1, $minutes1); // estimated time
$t2 = mktime($hours2, $minutes2); // completed time
// Calc the difference in seconds
$seconds = $t1 - $t2;
// hours
$hours = floor($seconds / (60*60));
// minutes
$minutes = floor(($seconds / 60) % 60);
// result 19:45
echo $diff = $hours . ':' . $minutes;
De uitkomst 19:45 klopt. Dit is het verschil in uren positief.
Als ik de tijden aanpas naar
$estimated_time = '40:00';
$completed_time = '44:30';
dan is de uitkomt -5:-30 maar moet zijn -4:30 (4:30 extra uren).
Dit komt door floor, maar als ik dit weg zou halen werkt de positieve berekening niet meer.
Heeft iemand een oplossing.
Ik heb ook geprobeerd met DateTime() te werken maar deze kan niet overweg met uren groten dan 24.
Voorbeeld
/**
* DATETIME EXAMPLE
*/
$one = new DateTime('40:00');
$two = new DateTime('12:00');
// difference
$diff = $one->diff($two);
// Werkt niet error!