检查php中两个数字之间的时间

时间:2012-02-09 01:28:25

标签: php numbers

我遇到以下代码问题:     

if (Date("D") == "Sat" or Date("D") == "Sun") {
    echo("No School");
}
else {
    if (Date("g") >= 2 && Date("i") >= 10 && Date("A") == "PM"){
        echo("No School");
    }

    elseif(Date("g") == 8 && Date("i") <= 15 && Date("A") == "AM"){
        echo("Homeroom");
    }
    elseif(Date("g") == 8 && Date("i") >= 15 && Date("A") == "AM"){
        echo("Period 1");
    }
    elseif(Date("g") == 9 && Date("i") <= 30 && Date("A") == "AM"){
        echo("Period 1");
    }
    elseif(Date("g") == 9 && Date("i") >= 35 && Date("A") == "AM"){
        echo("Period 2");
    }
    elseif(Date("g") == 10 && Date("i") <= 50 && Date("A") == "AM"){
        echo("Period 2");
    }
    elseif(Date("g") == 10 && Date("i") >= 50 && Date("A") == "AM"){
        echo("Lunch");
    }
    elseif(Date("g") == 11 && Date("i") <= 35 && Date("A") == "AM"){
        echo("Lunch");
    }
    elseif(Date("g") == 11 && Date("i") >= 35 && Date("A") == "AM"){
        echo("Period 3");
    }
    elseif(Date("g") == 12 && Date("i") <= 50 && Date("A") == "PM"){
        echo("Period 3");
    }
    elseif(Date("g") == 12 && Date("i") >= 55 && Date("A") == "PM"){
        echo("Period 4");
    }
    elseif(Date("g") == 1 && Date("i") >= 0 && Date("A") == "PM"){
        echo("Period 4");
    }
    elseif(Date("g") == 2 && Date("i") <= 10 && Date("A") == "PM"){
        echo("Period 4");
    }
}

?>

我想查看当前时间是什么,然后回显你将进入哪个时期。我尝试将系统时间更改为更早的时间但它仍然说没有学校。我不确定它是否与代码有关,或者php是否根据计算机时间以外的其他内容检查您的时区。

2 个答案:

答案 0 :(得分:1)

简化您的逻辑并消除早期

$now = time();  // change this to test other times

if (in_array(date('N', $now), array(6, 7))) {
    // Sat or Sun
} else if ($now < strtotime('8:15', $now)) {
    // before start
} else if ($now < strtotime('9:30', $now)) {
    // first period
} else if ($now < strtotime('10:30', $now)) {
    // second period
} ... {
    ...
} else if ($now < strtotime('14:30', $now)) {  // use real time, not AM/PM ;-P
    ...
} else {
    // after school
}

如果时间在开始之前,它就会消失,否则,如果它在第二个时间段之前,则是第一个时间段,否则,如果它在第三个时间段之前,则是第二个时间段,依此类推。这也可以帮助您涵盖介于两者之间的所有案例,最后else涵盖所有案例。

答案 1 :(得分:0)

似乎你的代码工作正常。你必须指定你的时区。

<?php
date_default_timezone_set('Asia/Colombo');

if (date("D") == "Sat" or date("D") == "Sun") {
    echo("No School");
}
else {
    if (date("g") >= 2 && date("i") >= 10 && date("A") == "PM"){
        echo("No School");
    }

    elseif(date("g") == 8 && date("i") <= 15 && date("A") == "AM"){
        echo("Homeroom");
    }
    elseif(date("g") == 8 && date("i") >= 15 && date("A") == "AM"){
        echo("Period 1");
    }
    elseif(date("g") == 9 && date("i") <= 30 && date("A") == "AM"){
        echo("Period 1");
    }
    elseif(date("g") == 9 && date("i") >= 35 && date("A") == "AM"){
        echo("Period 2");
    }
    elseif(date("g") == 10 && date("i") <= 50 && date("A") == "AM"){
        echo("Period 2");
    }
    elseif(date("g") == 10 && date("i") >= 50 && date("A") == "AM"){
        echo("Lunch");
    }
    elseif(date("g") == 11 && date("i") <= 35 && date("A") == "AM"){
        echo("Lunch");
    }
    elseif(date("g") == 11 && date("i") >= 35 && date("A") == "AM"){
        echo("Period 3");
    }
    elseif(date("g") == 12 && date("i") <= 50 && date("A") == "PM"){
        echo("Period 3");
    }
    elseif(date("g") == 12 && date("i") >= 55 && date("A") == "PM"){
        echo("Period 4");
    }
    elseif(date("g") == 1 && date("i") >= 0 && date("A") == "PM"){
        echo("Period 4");
    }
    elseif(date("g") == 2 && date("i") <= 10 && date("A") == "PM"){
        echo("Period 4");
    }
    else
    {
        echo("Too early to school");
    }
}
?>