如果时间在两个给定时间内,则返回一个值

时间:2017-08-14 13:38:12

标签: php mysql

我有一个PHP脚本可以插入学生的出席情况。我想插入出勤状态,如果时间()在凌晨5点到7点半之间那么我的compareTime函数应返回P或Present,如果time()在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());

更新:我已将其解决了。函数没有返回确切值的原因是因为没有设置时区。因此,每当我得到约会时(&#39; Y-m-d H:i:s&#39;),它都与我的机器的日期和时间不符。通过添加 date_default_timezone_set(&#39;亚洲/新加坡&#39;); 解决了我的问题。谢谢所有帮助过的人!

2 个答案:

答案 0 :(得分:0)

对于所有strtotime添加日期也

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

答案 1 :(得分:0)

而不是strtotime('05:00:00')使用strtotime('today')+86400*5;(今天00:00的时间戳+5小时)