2017-05-19 12 views
0

Ich versuche, den Unterschied zwischen einem Datetime und einem aktuellen Datetime mit CakePHP zu bekommen. Es ist mir gelungen, es zu bekommen, aber ich möchte es in Stunden, Minuten und Sekunden umwandeln.Erhalten Sie den Unterschied zwischen 2 Datum und Uhrzeit von Stunden, Minuten und Sekunden mit CakePHP

hier ist mein Code:

$currDateTime = Time::now(); 

$date1 = $plan->start_day->format('Y-m-d'); 
$date2 = $currDateTime->format('Y-m-d'); 
$diff = abs(strtotime($date1) - strtotime($date2)); 
$years = floor($diff/(365*60*60*24)); 
$months = floor(($diff - $years * 365*60*60*24)/(30*60*60*24)); 
$days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24)) ; 

$time1 = $plan->start_day->format('H:i:s'); 
$time2 = $currDateTime->format('H:i:s'); 
$seconds = abs(strtotime($time1) - strtotime($time2)); 
$hours = floor($seconds/3600); 
$mins = floor(($seconds - ($hours*3600))/60); 
$secs = floor($seconds % 60); 

das Ergebnis ist ein Unterschied in Jahren, Monaten, Tagen, Stunden, Minuten und Sekunden. Wie kann ich es nur in H konvertieren: m: s ??

+0

einen Blick auf diese haben http://stackoverflow.com/questions/43448587/find-cout- of-specific-day-zwischen-zwei-date-php-ohne-using-any-loop –

Antwort

1

gibt es keine Notwendigkeit für all diese Berechnungen, erstellen Sie einfach ein DateInterval diff die diff() Methode des Zeitobjekt zur Verfügung gestellt verwenden, und verwenden Sie die days, h, i und s Werte es die gewünschte Ausgabe erstellen bietet. Die einzige Berechnung, die erforderlich wäre, wäre das Hinzufügen der Tage in Stunden.

$diff = $currDateTime->diff($plan->start_day); 
$formatted = sprintf('%02d:%02d:%02d', ($diff->days * 24) + $diff->h, $diff->i, $diff->s); 

Siehe auch

Verwandte Themen