Я хочу получить часы отсутствия каждого студента.
Пример:
$student_absence_from_time = 08:00 -> $student_absence_to_time = 10:00
$student_absence_from_time = 09:00 -> $student_absence_to_time = 10:00
$student_absence_from_time = 08:00 -> $student_absence_to_time = 09:00`
я хочу получить разницу между $student_absence_from_time
а также $student_absence_to_time
и посчитайте разницу, чтобы получить полное время отсутствия каждого студента, например, 10:00 — 08:00 = 2 часа + 10:00 — 08:00 = 2 часа + 09:00 — 08:00 = 1 час. Общее время отсутствия 5 часов
Спасибо вам 🙂
Ты можешь использовать StrToTime преобразовать время, а затем массив уменьшить считать их.
Учтите следующее:
$arr = array();
$arr[] = array("student_absence_from_time" => "08:00", "student_absence_to_time" => "10:00");
$arr[] = array("student_absence_from_time" => "09:00", "student_absence_to_time" => "10:00");
$arr[] = array("student_absence_from_time" => "08:00", "student_absence_to_time" => "09:00");
function cntAbsence($carry, $item) {
return $carry + strtotime($item["student_absence_to_time"]) - strtotime($item["student_absence_from_time"]);
} // adding the different between "from_time" to "to_time"echo array_reduce($arr, "cntAbsence", 0) / 3600; // time is in second so divided by 3600 to get hours and use 0 as init
Получить и сохранить метку времени как результат функции time()
(секунд с 1970 года), а не как текст. Это время не зависит от часового пояса. Разница между двумя временными метками — это количество прошедших секунд. использование date()
или же strftime()
(Я предпочитаю второе) печатать метки времени как текст.
кстати, UNIX_TIMESTAMP()
является эквивалентом SQL time()
,