2017-08-14 6 views
-3

Ich erstelle PHP-Funktion, die Differenz zwischen zwei Daten in einem Format zurückgibt: 2 Monate, 3 Wochen, 6 Tage, 3 Stunden. Ich habe versucht, PHP DateTime-Klasse zu verwenden, aber es gibt nur Monate, Tage und Stunden zurück und ich kann keinen Weg finden, Weeks zu berechnen.PHP DateTime Difference (Stunden, Tage, Wochen, Monate)

Dies ist meine Funktion:

public function DateTimeDifference($FromDate, $ToDate) { 
    $FromDate = new DateTime($FromDate); 
    $ToDate = new DateTime($ToDate); 
    $Interval = $FromDate->diff($ToDate); 

    $Difference["Hours"] = $Interval->h; 
    $Difference["Days"] = $Interval->d; 
    $Difference["Months"] = $Interval->m; 

    return $Difference; 
} 

Nun, ich brauche $ Difference [ "Wochen"] auch im Gegenzug Daten enthalten.

EDIT: Ich weiß, ich kann Tage mit 7 teilen und Wochen bekommen, aber das ergibt sich nicht richtig. Zum Beispiel: 2 Monate, 14 Tage, 3 Stunden - Wenn ich teile 14 Tage mit 7 Ich werde erhalten: 2 Monate, 2 Wochen, 14 Tage, 3 Stunden und jetzt ist dies nicht der gleiche Zeitraum.

+0

Interessant ... wie viele Tage in einer Woche? – iXCray

+0

Interessant ... wie findet man Modulo von Tagen geteilt durch 7? – iXCray

+0

Sie müssen nicht einmal Modulo verwenden, es ist einfache Mathematik. – Andreas

Antwort

4
public function DateTimeDifference($FromDate, $ToDate) { 
    $FromDate = new DateTime($FromDate); 
    $ToDate = new DateTime($ToDate); 
    $Interval = $FromDate->diff($ToDate); 

    $Difference["Hours"] = $Interval->h; 
    $Difference["Weeks"] = floor($Interval->d/7); 
    $Difference["Days"] = $Interval->d % 7; 
    $Difference["Months"] = $Interval->m; 

    return $Difference; 
} 
+0

Das ist richtig. Cray verwendet den Modulo-Operator, um den Rest nach der Division der Tage durch 7 zu berechnen. Weitere Informationen finden Sie unter http://php.net/manual/en/language.operators.arithmetic.php. – JasonK

Verwandte Themen