Вычислить разницу между двумя временными метками в 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');