У меня две даты в формате 24 часа
$fulldate_hour_start = "2013-11-11 18:16:00 "; $fulldate_hour_end = "2013-11-11 23:30:00 ";
и я вычитал их, используя это
$Hours = number_format((((strtotime($fulldate_hour_end) - strtotime($fulldate_hour_start)) / 60) / 60),2);
и результат составляет 5 часов и 23 минуты. это должно быть 5 часов и 14 минут. Какая у меня ошибка?
Попробуй это :
$date1 = new DateTime("2013-11-11 18:16:00"); $date2 = new DateTime("2013-11-11 23:30:00"); $interval = $date1->diff($date2); echo "difference " . $interval->h . " Hours, " . $interval->i." Mintues, ".$interval->s." seconds ";
Вы делите на 3600 для преобразования от секунд до часов, а затем с помощью number_format
для рендеринга результата с двумя десятичными знаками.
Результатом выражения было:
5.23
Это действительно примерно 5 часов и 14 минут. (Помните, что час имеет 60 минут.)
Вместо этого вы должны сохранить значение в секундах, а затем использовать функцию, чтобы преобразовать ее в читаемый человеком формат . Одна из возможностей – date_diff
; связанный вопрос SO имеет много других.
Поскольку час состоит из 60, а не 100, минут, 5,23 часа составляет 5 часов и 13,8 минут. 0,2-часовое несоответствие связано с округлением реального значения до двух десятичных знаков, чтобы получить 0,23.
0.23 * 60 = 13.8