Разница во времени PHP в 24-часовой системе - PullRequest
0 голосов
/ 02 сентября 2018

Я пытаюсь рассчитать время между двумя разными временами и вывести их в часах. Клиенту будет показано, сколько времени займет услуга.

Вот мой код:

$datetime1 = new DateTime($timeFROM);
$datetime2 = new DateTime($timeTO);
$interval = $datetime2->diff($datetime1);
$hour_decimal = number_format(intval($interval->format('%H')) + round(intval($interval->format('%I')) / 60, 2), 2, '.','');
echo $hour_decimal;

Код отлично работает для классических заданий, но для ночной работы он усложняется, потому что если значение второго раза ($timeTO) после 00:00, оно вычисляется от $timeTO до $timeFROM вместо $timeFROM до $timeTO.

Пример:

$timeFROM = "6:00";
$timeTO = "8:00";

выход = 2,00 Это было бы правильно.

Пример 2:

$timeFROM = "23:30";
$timeTO = "1:00";

output = 22.50 И это неправильно. Должно быть 1,50

Похоже, мне нужно заставить функцию всегда вычислять от $timeFROM до $timeTO, а не наоборот, независимо от того, какое значение больше.

Есть идеи? Не могу найти что-нибудь в Google, а также не знал, как спросить Google для этого точно. Извините, когда решение может быть очень простым!

Привет

1 Ответ

0 голосов
/ 02 сентября 2018

Добавьте 24 часа, если datetime2 меньше datetime1, если вы хотите только пересылать вычисления:

if ($datetime2 < $datetime1) {
    $datetime2->add(new DateInterval("PT24H"));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...