检查两个日期之间的日期

时间:2018-02-22 17:25:49

标签: php date strtotime date-difference

我必须检查收到的日期是否在今天之前的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 - 超出范围。

2 个答案:

答案 0 :(得分:5)

您正在使用||进行检查,因为您需要使用&&,因为您需要日期 BETWEEN

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

答案 1 :(得分:0)

你可以这样做:

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