我想得到每个学生的缺勤时间。
示例:
$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 = 2h + 09:00-08:00 = 1小时总缺勤时间为5小时
谢谢:)
答案 0 :(得分:0)
获取和存储时间戳记是函数time()
的结果(自1970年以来的秒数),而不是文本形式。此时间与任何时区无关。 2个时间戳之间的差是消失的秒数。使用date()
或strftime()
(我更喜欢第二个)将时间戳打印为文本。
btw,UNIX_TIMESTAMP()
是与time()
等效的SQL。
答案 1 :(得分:0)
您可以使用strtotime转换时间,然后使用array-reduce进行计数。
请考虑以下内容:
$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