查找时间是否在定义的范围内


Finding whether time is in a defined range

可能的重复项:
如何检查日期是否在给定范围内?
如何检查日期(由用户输入)是否在给定范围内(日期格式:-d月份即:-1 六月)

我正在尝试查找日期是否在定义的范围内。我正在使用以下代码:

    $apple='25 March';
    $udate= date('d F',strtotime($apple));
    echo $udate;
    $startDate='21 March';
    $realStartDate= date('d F',strtotime($startDate)) ;
    echo $realStartDate;
    $endDate='19 April';
    $realEndDate= date('d F',strtotime($endDate)) ;
    if ($udate >= $realStartDate && $udate <= $realEndDate ) {
        echo 'within tange';
    }
    else{
        echo 'Not in range';
    }
    ?>

我哪里出错了?

试试这个它的工作......

<?php
        $udate          = '25 March';
        $udateTimestamp = strtotime($udate);

        $startDate          = '21 March';
        $startDateTimestamp = strtotime($startDate);
        $endDate           = '19 April';
        $eEndDateTimestamp = strtotime($endDate);
        if ($udateTimestamp >= $startDateTimestamp && $udateTimestamp <= $eEndDateTimestamp)
        {
                echo 'within tange';
        }
        else
        {
                echo 'Not in range';
        }
?>

比较时间戳而不是字符串表示形式!

if(strtotime($apple) < strtotime($endDate) && strtotime($apple) > strtotime($startDate)){
 // All ok!
}

像这样

if(strtotime($givendate) > strtotime('3/21/xxxx') && strtotime($givendata) < strtotime('4/19/xxxx')) {
   // Its within range
}
您可以使用

DateTime

$userDate = new DateTime("2012-03-01");
if ( $userDate > new DateTime("2012-03-21 00:00:00") &&  $userDate < new DateTime("2012-04-19 23:59:59"))
{
   // In Range 
}

如果格式为(7 月 1 日),则将其放入函数中

if (inRange ( "1 June", "3 March", "7 December" )) {
    echo "In Range";
} else {
    echo "Out Of Range";
}
function inRange($dateCheck, $dateFrom, $dateTo) {
    $date = DateTime::createFromFormat ( "d F", $dateCheck );
    $date1 = DateTime::createFromFormat ( "d F", $dateFrom );
    $date2 = DateTime::createFromFormat ( "d F", $dateTo );
    if ($date > $date1 && $date < $date2) {
        return true;
    }
    return false;
}

试试这个

 if (strtotime($udate) >= strtotime($realStartDate) && strtotime($udate) <= strtotime($realEndDate) ) {
    echo 'within tange';
}
else{
    echo 'Not in range';
}