Intereting Posts
php дней между двумя датами «Недопустимое определение службы» при использовании DI-> Get Phalcon PHP Проверьте, существует ли электронная почта php Показать изображение на основе даты в PHP Массив сеанса PHP Отображение списка видео с канала – Vimeo Advanced API Как отправить и установить Mime с помощью PEAR Soap Самый быстрый способ обновить таблицу MySQL, если строка существует else insert. Более 2 уникальных ключей Laravel: Базовая таблица или просмотр не найдены: 1146 Таблица 'database.pages не существует Laravel 5.2 Вспышка сеанса не работает даже с веб-промежуточным программным обеспечением Как получить следующий буквенно-цифровой идентификатор на основе существующего значения из MySQL Как сделать веб-страницы с одинаковым дизайном Формат ключа должен использоваться в Crypt RSA WooCommerce отправляет клиенту новый заказ Где найти «низкую память» и «свободные циклы процессора» вызывает запуск сбора мусора на unset ()?

Вычислить разницу между 2 раза в часах в PHP

У меня два раза: например, текущее время – 08:24, а дата – 02/01/2013 в формате dd / mm / yyyy, и у меня есть другой раз в 13:46, а дата – 31/12/2012. Итак, как я могу рассчитать разницу между 2 раза в часах с помощью PHP. (т.е. 42,63 часа) Спасибо заранее.

Преобразуйте их в значения метки времени, а затем вычтите, чтобы получить разницу в секундах.

$ts1 = strtotime(str_replace('/', '-', '02/01/2013 08:24')); $ts2 = strtotime(str_replace('/', '-', '31/12/2012 13:46')); $diff = abs($ts1 - $ts2) / 3600; 

Другой способ – использовать классы, связанные с датой PHP. В приведенном ниже примере используется DateTime::diff() чтобы получить объект DateInterval ( $interval ). Затем он использует свойства интервала для достижения общего количества часов в интервале.

 $a = DateTime::createFromFormat('H:id/m/Y', '08:24 02/01/2013'); $b = DateTime::createFromFormat('H:id/m/Y', '13:46 31/12/2012'); $interval = $a->diff($b); $hours = ($interval->days * 24) + $interval->h + ($interval->i / 60) + ($interval->s / 3600); var_dump($hours); // float(42.633333333333) 

Если у вас есть даты как временные метки (используйте strtotime если необходимо), то просто strtotime их, при необходимости возьмите абсолютное значение, затем разделите на 3600 (количество секунд в час). Легко ^ _ ^

Я получил простое решение, попробуй это –

 echo getTimeDiff("10:30","11:10"); function getTimeDiff($dtime,$atime) { $nextDay = $dtime>$atime?1:0; $dep = explode(':',$dtime); $arr = explode(':',$atime); $diff = abs(mktime($dep[0],$dep[1],0,date('n'),date('j'),date('y'))-mktime($arr[0],$arr[1],0,date('n'),date('j')+$nextDay,date('y'))); $hours = floor($diff/(60*60)); $mins = floor(($diff-($hours*60*60))/(60)); $secs = floor(($diff-(($hours*60*60)+($mins*60)))); if(strlen($hours)<2){$hours="0".$hours;} if(strlen($mins)<2){$mins="0".$mins;} if(strlen($secs)<2){$secs="0".$secs;} return $hours.':'.$mins.':'.$secs; }