Как отсчитывает время в php - PullRequest
0 голосов
/ 29 января 2019

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

Пример:

$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 часов спасибо :)

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Вы можете использовать strtotime для преобразования времени, а затем array-Reduction для их подсчета.

Примите во внимание следующее:

$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 голосов
/ 29 января 2019

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

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

...