Проверьте дату между двумя датами

Я должен проверить, если дата поступления составляет от 3 до 6 месяцев до сегодняшнего дня. Если он находится за пределами этого диапазона, он должен выполнить определенный код.

ниже код

<?php

$date1 = '22-10-2017';
$date2 = date('d-m-Y' , strtotime('-3 months'));
$date3 = date('d-m-Y' , strtotime('-6 months'));
if((strtotime($date1) < strtotime($date2)) || (strtotime($date1) > strtotime($date3))){
echo "Inside Range";
}else echo "Out of Range";

?>

Например, если

  1. Дата поступления 20-02-2018 — вне диапазона.
  2. Дата поступления 20-10-2017 — Внутри диапазона.
  3. Дата поступления 20-08-2017 — вне диапазона.

0

Решение

Вы проверяете с || в вашем случае вам нужно использовать && потому что вам нужно свидание МЕЖДУ

$date1 = '20-08-2017';
$date2 = date('d-m-Y' , strtotime('-3 months'));
$date3 = date('d-m-Y' , strtotime('-6 months'));
if((strtotime($date1) <= strtotime($date2)) && (strtotime($date1) >= strtotime($date3))){
echo "Inside Range";
}else {
echo "Out of Range";
}

Объяснение:
Нужно изменить свое состояние с if((strtotime($date1) < strtotime($date2)) || (strtotime($date1) > strtotime($date3))) в if((strtotime($date1) <= strtotime($date2)) && (strtotime($date1) >= strtotime($date3))){

Это также значительно проще, если вы используете объекты DateTime:

$date1 = new DateTime('20-08-2017');
$date2 = new DateTime('-3 months');
$date3 = new DateTime('-6 months');

if($date1 < $date2 && $date1 > $date3) {
echo "Inside Range";
} else {
echo "Out of Range";
}
5

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

Вы можете сделать так:

$today=date_create(date("Y-m-d"));
$date=date_create("2018-06-12");
$diff=date_diff($today,$date)->format("%a");

if ($diff > 90 && $diff < 180) {
echo "Inside range";
}
else {
echo "Out of range";
}
0

По вопросам рекламы [email protected]