Вычитая время в PHP, вы получите разницу в секундах

Я хочу выяснить разницу во времени по секундам. Я продолжаю получать 0 в качестве результата и хочу знать, может ли кто-нибудь помочь мне. Время будет извлечено из базы данных.

Вот пример того, что я хочу сделать.

$TimeStart = "04:30:45 am";
$TimeEnd = "04:31:46 am";
$Difference = $TimeEnd - $TimeStart . "seconds";

Я знаю, что это не очень иллюстрированный пример, и я знаю, что, вероятно, не все так просто.

Вот код, который сейчас находится на моем сайте:

$TimeStart = strtotime($VisitsRow['TimeStart']);
$TimeEnd = strtotime($VisitsRow['TimeEnd']);
$TimeDifference = ($TimeEnd - $TimeStart);
if ($VisitsRow['TimeEnd'] == "") {
    $Timeto = "Incomplete";
} else {
    if ($TimeDifference <= 60) {
        $Timeto = "< a minute";
    } else if ($TimeDifference <= 0) {
        $Timeto = "< a second";
    } else {
        $Timeto = round($TimeDifference, 2)." seconds";
    }
    if ($TimeDifference >= 60) {
        $MinutesDiff = $TimeDifference / 60;
        $Timeto = round($MinutesDiff, 2)." minutes";
    }
}

Я просто попробовал пример того, что я хочу выше, и получаю отрицательное число. Вот почему мне нужна помощь.

2 ответа

Решение

Спасибо всем за помощь в решении этой проблемы. Моя проблема заключалась в том, что он собирал время в 24-часовом формате, а не в стандартном формате. Как только я решил это, все работает отлично.

Это довольно легко с strtotime:

$TimeStart = strtotime("04:30:45");
$TimeEnd = strtotime("04:31:46");

$Difference = ($TimeEnd - $TimeStart) . " seconds";

Но если вам нужно, чтобы он был более динамичным, с помощью SQL вы можете вычесть два поля даты следующим образом:

SELECT TIMESTAMPDIFF(MINUTE,TimeEnd,TimeStart) AS TimeDifference FROM myTable

(Обратите внимание, вы можете изменить MINUTE в другое время метрика если хочешь)

Другие вопросы по тегам