我有以下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日之间
答案 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";
}
}