如果声明不在日期之间使用

时间:2017-09-21 11:38:57

标签: php if-statement

我有以下if语句:

$current=date('d/m/Y');
$next_year=date('y')+1;

$q1a='01/04/'.date('Y');
$q1b='30/06/'.date('Y');

$q2a='01/07/'.date('Y');
$q2b='30/09/'.date('Y');

$q3a='01/09/'.date('Y');
$q3b='31/12/'.date('Y');

$q4a='01/01/20'.$next_year;
$q4b='31/03/20'.$next_year;

if (($current > $q1a) && ($current < $q1b)) 
{ 
    $currentquarter='Q1'; 
} 
elseif (($current > $q2a) && ($current < $q2b)) 
{ 
    $currentquarter='Q2'; 
} 
elseif (($current > $q3a) && ($current < $q3b)) 
{ 
    $currentquarter='Q3'; 
}
elseif (($current > $q4a) && ($current < $q4b))
{ 
    $currentquarter='Q4';
}   

echo $currentquarter;

但即使它应该是Q3,它的返回Q1,因为今天的日期在2017年9月1日至2017年12月31日之间

3 个答案:

答案 0 :(得分:3)

您不是在比较日期,而是在词汇上比较字符串。 E.g:

'21/03/2017' > '01/04/2017'

2大于0,所以这是真的。第一个字符串按字符排序“大于”第二个字符串。同样,它是词汇比较,而不是数字比较。

至少你需要将字节顺序反转为Y/m/d以获得正确的结果;但是你应该真正构造DateTime个对象或UNIX时间戳来正确地进行实际的日期/数字比较。

答案 1 :(得分:2)

对于PHP中的日期比较,您可以使用strtotime()函数

$date1    = '07/28/2018';
$date2    = '07/28/2017';

if(strtotime($date1) < strtotime($date2))
{
    echo 'Date2 is greater then date1';
}
else
{
    echo 'Date1 is greater then date2';
}

答案 2 :(得分:1)

这有助于您简化比较以检索当前季度。

function CurrentQuarter(){
     $n = date('n');
     if($n < 4){
          return "1";
     } elseif($n > 3 && $n <7){
          return "2";
     } elseif($n >6 && $n < 10){
          return "3";
     } elseif($n >9){
          return "4";
     }
}

Code Source