为什么我的 IF 语句没有捕捉到中间的日期

Why does my IF statement doesn't catch the date in-between

我的数据库中有很多不同日期的记录,但我的代码没有捕捉到日期,也没有显示出来。有什么问题?

这是我的代码

$year = date("Y");
$sem1_s = date("M-d-Y", strtotime(date('Y') . '-8-1 00:00:00'));
$sem1_e = date("M-d-Y", strtotime(date('Y') . '-12-31 00:00:00'));

$sem2_s = date("M-d-Y", strtotime(date('Y') . '-01-1 00:00:00'));
$sem2_e = date("M-d-Y", strtotime(date('Y') . '-06-30 00:00:00'));
$date = '2015-10-15';

$date2 = date("M-d-Y", strtotime(date('Y') . '-3-1 00:00:00'));

if($date2 >= $sem1_s && $date2 <= $sem1_e){
    echo $date2;
    echo "First Sem";
}
else if($date2 >= $sem2_s && $date2 <= $sem2_e){
    echo $date2;
    echo "Second Sem";
}
else{
    echo "error";
}

尝试像这样更改您的 if 语句

$year = date("Y");
$sem1_s = date("M-d-Y", strtotime(date('Y') . '-8-1 00:00:00'));
$sem1_e = date("M-d-Y", strtotime(date('Y') . '-12-31 00:00:00'));

$sem2_s = date("M-d-Y", strtotime(date('Y') . '-01-1 00:00:00'));
$sem2_e = date("M-d-Y", strtotime(date('Y') . '-06-30 00:00:00'));
$date = '2015-10-15';

$date2 = date("M-d-Y", strtotime(date('Y') . '-3-1 00:00:00'));

if($date2 >= $sem1_s || $date2 <= $sem1_e){
    echo $date2;
    echo "First Sem";
}
else if($date2 >= $sem2_s || $date2 <= $sem2_e){
   echo $date2;
   echo "Second Sem";
}
else{
    echo "error";


}

我认为你不能在字符串中使用大于号或小于号 您应该将变量转换为 strtotime。

    if(strtotime($date2) >= strtotime($sem1_s) && strtotime($date2) <= strtotime($sem1_e)){
    echo $date2;
    echo "First Sem";
    }
    else if(strtotime($date2) >= strtotime($sem2_s) && strtotime($date2) <= strtotime($sem2_e)){
     echo $date2;
    echo "Second Sem";
    }
    else{
    echo "error";

在你的 if 语句中试试这个,正如我之前在你的问题下面的评论中提到的,问题出在你的 if 语句上。所以将其更改为:

if (strtotime($date2) >= strtotime($sem1_s) && strtotime($date2) <= strtotime($sem1_e))

因为您需要将日期转换为UNIX timestamp以便比较。

下面会return想要的结果,

if(strtotime($date2) >= strtotime($sem1_s) && strtotime($date2) <= strtotime($sem1_e)){
   echo $date2;
   echo "First Sem";
}
else if(strtotime($date2) >= strtotime($sem2_s) && strtotime($date2) <= strtotime($sem2_e)){
   echo $date2;
   echo "Second Sem";
}
else{
   echo "error";
}