Вернуть значение, если время не превышает двух

У меня есть сценарий PHP, который вставит посещаемость студента. Я хочу вставить в статус посещаемости, если время () между 5 утра и 7:30 утра тогда моя функция CompareTime должна вернуть P или Present и если время () между 7:31 и 8:30 тогда функция должна вернуть L или Late. Я не могу получить правильное возвращаемое значение с этим сравнением времени. Мне очень нужна помощь.

Вот мой код:

function compareTime($time,$grade){
if ($grade == "H1" || $grade == "H2" || $grade == "H3" || $grade == "H4" || $grade == "S1" || $grade == "S2") {
if ($time > strtotime('07:30:00') && $time < strtotime('8:30:00')){
return "L";
} else if ($time > strtotime('05:00:00') && $time <= strtotime('7:30:00')){
return "P";
}
} else {
if ($time > strtotime('07:15:00') && $time < strtotime('8:30:00')){
return "L";
} else if ($time > strtotime('05:00:00') && $time <= strtotime('7:30:00')){
return "P";
}
}

Код вставки:

function recordAttendance($conn, $sid, $glid, $scid){
$sql = mysqli_query($conn, "INSERT INTO tbl_attendance(student_id, gradeLevel_id, section_id, date, arrival_time, status) VALUES ('".$sid."', '".$glid."', '".$scid."', CURDATE(), CURTIME(), '".compareTime(time(),$glid)."')")or die(mysqli_error());

ОБНОВИТЬ: Я исправил это. Причина, по которой функция не возвращает точное значение, заключается в том, что в часовом поясе ничего не установлено. Поэтому всякий раз, когда я получаю дату (‘Y-m-d H: i: s’), она не совпадает с датой и временем моей машины. Добавляя date_default_timezone_set ( ‘Asia / Singapore’); исправил мою проблему. Спасибо всем, кто помог!

0

Решение

Для всех strtotime добавить дату также

   strtotime('2017-08-14 07:30:00')
0

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

Вместо strtotime('05:00:00') использование strtotime('today')+86400*5; (отметка времени 00:00 сегодня + 5 часов)

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector