У меня две метки времени
2016-01-01 00:00:00
2016-01-02 23:59:59

Используя PHP, как я могу рассчитать количество часов и минут между двумя временами и получить результат в виде десятичной дроби с двумя знаками после.

В настоящее время у меня есть это:

    $Start = new DateTime($StartTime);
    $Finish = new DateTime ($FinishTime);
    $Interval = date_diff($Start,$Finish);
    $Hours = $Interval->format('%h.%i');

Но результат неверен, если пользователь запускает таймер в день 1 и заканчивает в день 2.

php
1
Lewis M Hackfath 20 Апр 2016 в 05:22

3 ответа

Лучший ответ

Вы можете умножить количество дней на 24, чтобы преобразовать их в часы, затем просуммировать часы и объединить минуты:

$start = new DateTime('2016-01-01 00:00:00');
$end = new DateTime('2016-01-02 23:59:59');
$interval = $end->diff($start);
$days = $interval->format('%d');
$hours = 24 * $days + $interval->format('%h');
echo $hours.':'.$interval->format('%i');
3
user2182349 20 Апр 2016 в 02:34

Вы можете отформатировать DateTime как временную метку UNIX, а затем просто вычесть, чтобы получить общее количество секунд, и отформатировать вывод с помощью gmdate ().

$Start = new DateTime($StartTime);
$Finish = new DateTime ($FinishTime);
$Interval = $Start->format('U') - $Finish->format('U');
$Hours = gmdate("H:i:s", $Interval); 
0
larsAnders 20 Апр 2016 в 02:33

Попробуй это.

$Hours = $Interval->format('%a.%h.%i');
0
Pang 20 Апр 2016 в 02:36