【问题标题】:Why does my IF statement doesn't catch the date in-between为什么我的 IF 语句没有捕捉到中间日期
【发布时间】:2015-11-27 06:58:15
【问题描述】:

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

这是我的代码

$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";
}

【问题讨论】:

标签: php if-statement date-range


【解决方案1】:

在您的 if 声明中尝试此操作,正如我之前在您问题下方的评论中提到的那样,问题在于您的 if 声明。所以把它改成这样:

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

【讨论】:

    【解决方案2】:

    尝试像这样更改您的 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";
    
    
    }
    

    【讨论】:

      【解决方案3】:

      我认为您不能在字符串中使用大于或小于号 您应该将变量转换为 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";
      

      【讨论】:

        【解决方案4】:

        因为您需要将日期转换为UNIX timestamp 进行比较。

        下面会返回想要的结果,

        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";
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-01-06
          • 2022-08-15
          • 1970-01-01
          • 2019-05-16
          • 2021-11-15
          • 1970-01-01
          相关资源
          最近更新 更多