Вычислить разницу между двумя временными метками в php

Я использую 2 timestamp в моей таблице, которая starttime datatype- timestamp и текущую временную метку. конечный тип времени-времени и значение по умолчанию 0000-00-00 00:00:00

как рассчитать разницу между 2 метками времени в php время начала: 2016-11-30 03:55:06 endtimetime: 2016-11-30 11:55:06

Ответ 1

Любого процессуального пути следует избегать. Используйте метод ООП для разницы даты и времени:

$datetime1 = new DateTime('2016-11-30 03:55:06');//start time
$datetime2 = new DateTime('2016-11-30 11:55:06');//end time
$interval = $datetime1->diff($datetime2);
echo $interval->format('%Y years %m months %d days %H hours %i minutes %s seconds');//00 years 0 months 0 days 08 hours 0 minutes 0 seconds

Вы можете установить формат разницы в соответствии с вашими потребностями.

%Y - use for difference in year
%m - use for difference in months
%d - use for difference in days
%H - use for difference in hours
%i - use for difference in minutes
%s - use for difference in seconds

Вы можете удалить любое из указанных выше значений в соответствии с вашими потребностями. Например, если вас интересует только разница в часах, и вы знаете, что разница не может превышать 24 часа, используйте только %H

Если вы хотите иметь общую разницу в секундах, вы можете использовать:

echo $difference_in_seconds = strtotime('2016-11-30 11:55:06') - strtotime('2016-11-30 03:55:06');//28800

Зависит от вашей потребности и окончательного формата, в котором вы хотите иметь разницу во времени.

Для справки: http://php.net/manual/en/datetime.diff.php

Я надеюсь, что это помогает

Ответ 2

Вы можете конвертировать ваши временные метки в unix timestamp (время в секундах), используя php strtotime, а затем принять разницу. Теперь у вас есть разница во времени в секундах и вы можете конвертировать в то, что вам нужно... часы, мин, дни

http://php.net/manual/en/function.strtotime.php

например:

$ts1 = strtotime($start);
$ts2 = strtotime($end);     
$seconds_diff = $ts2 - $ts1;                            
$time = ($seconds_diff/3600);

Ответ 3

Самый простой ответ (для меня, конечно) здесь

function dateDifference($date_1 , $date_2 , $differenceFormat = '%a' )
{
    $datetime1 = date_create($date_1);
    $datetime2 = date_create($date_2);

    $interval = date_diff($datetime1, $datetime2);

    return $interval->format($differenceFormat);

}

В этом случае функция date_create() создает объект DateTime

Ответ 4

попробуйте этот код, протестированный на phpfiddle.org: -

function timestampdiff($qw,$saw)
{
    $datetime1 = new DateTime("@$qw");
    $datetime2 = new DateTime("@$saw");
    $interval = $datetime1->diff($datetime2);
    return $interval->format('%Hh %Im');
}
echo timestampdiff('1524794340', '1524803100');