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


Check Time between two numbers in php

我对以下代码有问题:

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是否基于计算机时间以外的其他东西来检查您的时区。

简化您的逻辑并尽早消除

$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涵盖之后的所有情况。

似乎您的代码运行良好。你必须指定你的时区。

<?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");
    }
}
?>