PHP проверить, если дата-время между двумя датами-таймами без зацикливания - PullRequest
0 голосов
/ 04 мая 2020

Я старался изо всех сил, чтобы сделать это, но пока не повезло. Я видел этот пост, где они используют только даты. Но я хотел бы использовать дату со временем. В первом случае: -

Метод: 1

       public static function dateIsInBetween(\DateTime $from, \DateTime $to, \DateTime $subject)
    {
        return $subject->getTimestamp() > $from->getTimestamp() && $subject->getTimestamp() <  $to->getTimestamp() ? true : false;
    }
        $checkDate = new \DateTime("2020-01-23 13:42:49");
        $DateBegin = new \DateTime("2020-01-21 11:00:00");
        $DateEnd   = new \DateTime("2020-01-25 13:00:00");

        echo self::dateIsInBetween($DateBegin, $DateEnd, $checkDate) ? "is between" : "NO GO!";
        //Wrong Result :- is between 

Метод: 2

 $checkDate = strtotime("2020-01-23 13:42:49");
        $startDate = strtotime("2020-01-21 11:00:00");
        $endDate = strtotime("2020-01-25 13:00:00");
        if($checkDate > $startDate && $checkDate < $endDate) {
           echo 'IN BETWEEN';

        }else{
           echo 'NO';
           }

        //Wrong Result :- is between 

1 Ответ

0 голосов
/ 04 мая 2020

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

$startTime = strtotime("7:00");
$endTime   = strtotime("10:30");

$chkStartTime = strtotime("10:00");
$chkEndTime   = strtotime("12:10");

if($chkStartTime > $startTime && $chkEndTime < $endTime)
{   #-> Check time is in between start and end time
    echo "1 Time is in between start and end time";
}elseif(($chkStartTime > $startTime && $chkStartTime < $endTime) || ($chkEndTime > $startTime && $chkEndTime < $endTime))
{   #-> Check start or end time is in between start and end time
    echo "2 ChK start or end Time is in between start and end time";
}elseif($chkStartTime==$startTime || $chkEndTime==$endTime)
{   #-> Check start or end time is at the border of start and end time
    echo "3 ChK start or end Time is at the border of start and end time";
}elseif($startTime > $chkStartTime && $endTime < $chkEndTime)
{   #-> start and end time is in between  the check start and end time.
    echo "4 start and end Time is overlapping  chk start and end time";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...