Получить разницу между временем, используя strtotime, возвращает другое значение - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть два разных времени в 24-часовом формате, который время и время ожидания.Учитывая сценарий ниже:

$timeIn = "19:00";
$timeOut = "09:00";
//calculated it using strtotime
$timeDiff = strtotime($timeIn) - strtotime($timeOut);
$timeDiff = ($timeDiff/60)/60;
//result is 10:00

С этим, вместо того, чтобы возвращать 14 часов, он возвращает только 10 часов.Как я могу поймать это?

ОБНОВЛЕНИЕ

Спасибо за комментарии, ребята.Вот как я это делаю:

if($timeIn > $timeOut){
    $timeDiff = 24 - abs(strtotime($timeIn)/60)/60;
    $timeDiff += $timeOut;
}else{
    $timeDiff = strtotime($timeIn) - strtotime($timeOut);
    $timeDiff = ($timeDiff/60)/60;
}

Ответы [ 4 ]

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

Для этого подхода я решил ее с помощью этой формулы, и нет необходимости использовать datetime, поскольку у меня нет данных в моих данных.

if($timeIn > $timeOut){
    $timeDiff = 24 - abs(strtotime($timeIn)/60)/60;
    $timeDiff += $timeOut;
}else{
    $timeDiff = strtotime($timeIn) - strtotime($timeOut);
    $timeDiff = ($timeDiff/60)/60;
}

Надеюсь, что это хорошо поможет другим.

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

Оу .. вы можете использовать datetime, как в этом примере:

<?php
$timeIn = new DateTime("2019-09-14 19:00:00");
$timeOut = new DateTime("2019-09-15 09:00:00");

$interval = $timeOut->diff($timeIn);
echo $interval->h;
?>
0 голосов
/ 14 сентября 2018

Функция, возвращающая 10 часов, является правильной и ожидаемой.

19-9=10

PHP не знает, что вы хотите считать часы с 19:00 до 9:00 на следующий день . Пожалуйста, обратитесь к ответу Д.Димитрова, который показывает правильный путь, используя DateTime

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

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

Пример:

$timeIn = "2018-09-14 19:00:00";
$timeOut = "2018-09-15 09:00:00";
//calculated it using strtotime
$timeDiff = strtotime($timeIn) - strtotime($timeOut);

и это сработает

...