Почему мое утверждение 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";
}

2

Решение

Попробуйте это в вашем if Заявление, как я уже упоминал ранее в комментарии ниже вашего вопроса, проблема с вашим if заявление. так что измени это

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

Другие решения

Попробуйте изменить свое утверждение 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";


}
0

Я думаю, что вы не можете использовать знак «больше или меньше» в строке
Вы должны преобразовать свои переменные как 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";
0

Потому что вам нужно конвертировать даты в Метка времени UNIX для сравнения.

Ниже вернется желаемый результат,

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";
}
0
По вопросам рекламы [email protected]