массивы — как отсчет времени в переполнении стека

Я хочу получить часы отсутствия каждого студента.

Пример:

$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 часов
Спасибо вам 🙂

-1

Решение

Ты можешь использовать 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
0

Другие решения

Получить и сохранить метку времени как результат функции time() (секунд с 1970 года), а не как текст. Это время не зависит от часового пояса. Разница между двумя временными метками — это количество прошедших секунд. использование date() или же strftime() (Я предпочитаю второе) печатать метки времени как текст.

кстати, UNIX_TIMESTAMP() является эквивалентом SQL time(),

0

По вопросам рекламы [email protected]