Я пытаюсь написать функцию, чтобы проверить, попадает ли какое-то время (чч: мм) в течение двух временных штампов. Следующий метод работает отлично, за исключением случаев, когда $checktime
находится после 23:00
. Окно начала и окончания всегда находится примерно на расстоянии 30 минут (не охватывает несколько дней). Как я могу решить эту проблему?
<?php
$startWindow = '2015-02-21 23:30:08';
$endWindow = '2015-02-22 00:01:26';
$checkTime = '23:44';
$startTime = strtotime($startWindow);
$endTime = strtotime($endWindow);
$checkTime = strtotime($checkTime);
if (($checkTime >= $startTime) && ($checkTime < $endTime)) {
echo "In Range";
}
else {
echo "Out of Range"; //gets printed
}
Вам также нужно будет указать дату отметки времени, которую вы хотите проверить.
Добавьте переменную $checkDate
которая является датой сопровождающего $checkTime
в формате YYYY-MM-DD.
Затем измените свой код:
$checkTime = strtotime($checkDate . ' ' . $checkTime . ':00');
if (($checkTime >= $startTime) && ($checkTime < $endTime)) {
echo "In Range";
}
else {
echo "Out of Range"; //gets printed
}
$startWindow = '2015-02-21 23:30:08'
и $endWindow = '2015-02-22 00:05:26';
Оба $checkTime = '23:44';
и $checkTime = '00:02'
должны попадать в диапазон. Как я могу передать одну $ startDate и достичь этого?
Вы должны установить дату
<?php
$startWindow = '2015-02-21 23:30:08';
$endWindow = '2015-02-22 00:01:26';
$checkTime = '2015-02-21 23:44'; // or $checkTime = date('Y-m-d') . ' 23:44';
$startTime = strtotime($startWindow);
$endTime = strtotime($endWindow);
$checkTime = strtotime($checkTime);
if (($checkTime >= $startTime) && ($checkTime < $endTime)) {
echo "In Range";
}
else {
echo "Out of Range"; //gets printed
}
?>