Ich habe ein bisschen PHP-Code hier, der eine Zeitdauer berechnet (und ausgibt). Ich habe ein if/else, das wählt, wie man die Dauer berechnet. Aufgrund der Art und Weise, wie ich die Berechnungen durchgeführt habe, ist unter einem Umstand die Dauer, die ausgegeben wird, ein DateTime-Objekt, unter der anderen ist es ein DateInterval-Objekt. Die Formatierung von beiden erfolgt außerhalb der if/else-Anweisung.PHP DateTime-Formatierung funktioniert, aber DateInterval-Formatierung funktioniert nicht
Die Berechnungen funktionieren einwandfrei, und die Formatierung für das DateTime-Objekt funktioniert einwandfrei, aber die Formatierung für das DateInterval-Objekt ist deaktiviert. Es zeigt Prozentzeichen innerhalb der Ausgabezeit (Beispiel am Ende des Codeblocks).
$time1 = new DateTime($row[0]);
$time2 = new DateTime($row[1]);
if ($time1 > $time2) {
$twentyFourHours = new DateTime('240000');
$difference = $time1->diff($twentyFourHours);
$time2->add($difference);
$duration = $time2; // this is a DateInterval object
}
else {
$duration = $time2->diff($time1); // This is a DateTime object
}
echo $duration->format('%H:%I');
echo '<br>';
echo $row['2'];
}
Im Folgenden ein Beispiel für die Ausgabe ist ich erhalte (jede zweite Dauer ist das DateInterval Objekt mit den Prozentzeichen):
02:10
2016-06-16
% 12:% 0
2016-06-16
03:04
2016-06-17
% 12:% 0
2016-06-17
Von dem, was ich in der DateInterval Formatierung docs sagen kann, ich die Formatierung korrekt H bin Einstellung für zweistellige Stunden und Minuten zweistellig ('%:% I '), aber die Ausgabe scheint das Gegenteil zu beweisen. Ich vermute, ich übersehe etwas albern und wäre dankbar, wenn jemand darauf hinweisen könnte, wo ich falsch liege.
Vielen Dank!
Danke für die Köpfe hoch. Ich hätte versuchen sollen, sie umzukehren und zu überprüfen, bevor ich hier frage. Ich habe eine print_r auf beiden und ich hätte schwören können, dass es wie gesagt war, aber offensichtlich war es nicht so. Hätte es am nächsten Morgen besser sehen sollen. –
Ich werde damit arbeiten, dass beide Szenarien den gleichen Typ von Objekt ausgeben, wie bedingte Formatierung wird mich später auf der Straße durcheinander bringen. –