оператор if — PHP проверяет, находится ли время в пределах диапазона, ставит под сомнение общее решение

Я должен проверить, попадает ли текущее дневное время в определенный диапазон. Я посмотрел в интернете и нашел несколько похожих решений:

$now = date("His");//or date("H:i:s")

$start = '130000';//or '13:00:00'
$end = '170000';//or '17:00:00'

if($now >= $start && $now <= $end){
echo "Time in between";
}
else{
echo "Time outside constraints";
}

Если оба условия должны быть выполнены, как этого добиться, если предположить, что $ start — 06:00:00, а $ end — 02:00:00.

Если предположить, что это 01:00:00, в этом случае первое условие не может быть истинным.

У кого-нибудь есть идея решить эту проблему по-другому?

Спасибо!

2

Решение

Естественно, вам придется учитывать дату в ваших сравнениях.

<?php

$start = strtotime('2014-11-17 06:00:00');
$end = strtotime('2014-11-18 02:00:00');

if(time() >= $start && time() <= $end) {
// ok
} else {
// not ok
}
3

Другие решения

date_default_timezone_set("Asia/Colombo");
$nowDate = date("Y-m-d h:i:sa");
//echo '<br>' . $nowDate;
$start = '21:39:35';
$end   = '25:39:35';
$time = date("H:i:s", strtotime($nowDate));
$this->isWithInTime($start, $end, $time);function isWithInTime($start,$end,$time) {

if (($time >= $start )&& ($time <= $end)) {
// echo 'OK';
return TRUE;
} else {
//echo 'Not OK';
return FALSE;
}

}
1

Если вам нужно проверить, переходит ли срок более полуночи

    function isWithinTimeRange($start, $end){

$now = date("His");

// time frame rolls over midnight
if($start > $end) {

// if current time is past start time or before end time

if($now >= $start || $now < $end){
return true;
}
}

// else time frame is within same day check if we are between start and end

else if ($now >= $start && $now <= $end) {
return true;
}

return false;
}

Затем вы можете узнать, находитесь ли вы в течение этого времени,

echo isWithinTimeRange(130000, 170000);
0
По вопросам рекламы [email protected]