代码之家  ›  专栏  ›  技术社区  ›  hemanth kumar

检查两个日期之间的日期

  •  0
  • hemanth kumar  · 技术社区  · 7 年前

    我必须检查一下入职日期是否在今天之前的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. 接收日期为2018年2月20日-超出范围。
    2. 接收日期为2017年10月20日-范围内。
    3. 传入日期为2017年8月20日-超出范围。
    2 回复  |  直到 7 年前
        1
  •  6
  •   Mike    7 年前

    您正在检查 || 在您的情况下,您需要使用 && 因为你需要约会 之间

    $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";
    }
    
        2
  •  0
  •   user6478676 user6478676    7 年前

    您可以这样做:

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