Проверьте время между двумя числами в php - PullRequest
1 голос
/ 09 февраля 2012

У меня проблемы со следующим кодом:

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 ]

1 голос
/ 09 февраля 2012

Упростите свою логику и исключите досрочно :

$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 охватывает все после.

0 голосов
/ 09 февраля 2012

Кажется, ваш код работает нормально. Вы должны указать свой часовой пояс.

<?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");
    }
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...