如何计算php

时间:2018-05-20 10:34:21

标签: php

这是我的代码,我根据当前日期计算截止日期。 如果用户在2月2日转移,而不是根据当前日期,将于6月1日显示。

  $current_date=date('Y-m-d');
  $ref_date=date('Y-m-d', strtotime($ref_date));

  if($current_date>$ref_date){

  $ref_month=date('m', strtotime($ref_date));
  if($ref_month=="12"){
      $ref_new_year = strtotime("1 year", strtotime($ref_date));
      $due_year=date("Y", $ref_new_year);
   }else{
      $due_year=date('Y', strtotime($ref_date));
   }

    $due_day=date('d', strtotime($ref_date));
    $due_month=date('m', strtotime($ref_date));

  $check_year=$due_year."-".$due_month."-".$due_day;

    $shift_month= date("m", strtotime($ref_date));
    $current_month=date("m", strtotime($current_date));
    $my_month1=$current_month-$shift_month;
    $my_month=$my_month1+1;

    $your_date1 = strtotime("$my_month month", strtotime($ref_date));
    $due_month1= date("m", $your_date1);
    $due_month121= date("M", $your_date1);

    $due_day1=date('d', strtotime($check_year));

    $check_month=$due_year."-".$due_month1."-".$due_day1;

    $ref_date12 = strtotime("-1 day", strtotime($check_month));
      $due_date11= date("d", $ref_date12);
      $ref_final_date=$due_year."-".$due_month1."-".$due_date11;

      $ref_date11=date('d', strtotime($ref_final_date));
      $current_date=date("d", strtotime($current_date));

    if($current_date<$ref_date11){
      $your_date1321 = strtotime("-1 month", strtotime($ref_final_date));
      $due_month22= date("M", $your_date1321);
      echo $final_date=$due_date11."-".$due_month22."-".$due_year;
    }else{
        echo $final_date=$due_date11."-".$due_month121."-".$due_year;
      }

}else{
  //Year
  $ref_month=date('m', strtotime($ref_date));
  if($ref_month=="12"){
      $ref_new_year = strtotime("1 year", strtotime($ref_date));
      $due_year=date("Y", $ref_new_year);
    }else{
      $due_year=date('Y', strtotime($ref_date));
    }

    $due_day=date('d', strtotime($ref_date));
    $due_month=date('m', strtotime($ref_date));

    $check_year=$due_year."-".$due_month."-".$due_day;

    //Month

    $ref_month = strtotime("1 month", strtotime($check_year));
    $due_month1= date("m", $ref_month);
    $due_month1321= date("M", $ref_month);
    $due_day1=date('d', strtotime($check_year));

    $check_month=$due_year."-".$due_month1."-".$due_day1;

    //Date

    $ref_date12 = strtotime("-1 day", strtotime($check_month));
    $due_date11= date("d", $ref_date12);

    if($current_date < $ref_date){
      echo "Tenant not shifted yet.";
    }else{
      echo $final_date=$due_date11."-".$due_month1321."-".$due_year;
    }
}

在此代码中,我面临的问题是,如果用户轮班日期是3月1日,则应付款将于6月31日到期,但6月仅为30天。请帮助我。

2 个答案:

答案 0 :(得分:0)

你正在使用它很有趣的日期函数,因为php确实认为没有31月6日

如果您对代码发表评论,我们可以提供进一步的帮助

如果你想长途跋涉,你可以在第4,6等月(30天月)做-1天

答案 1 :(得分:0)

使用"node_modules/bootstrap/dist/css/bootstrap.min.css"功能根据当前日期/时间构建未来日期。调用函数时,只需在days参数中添加30即可。

请注意,我正在使用mktime(),因为没有intval()格式字符串,这些日期部分没有前导0,这会使某些版本的PHP混淆为“整性”。如果您关心的只是日期而非时间,请随意对date()之类的值进行硬编码,而不是使用1调用来获取小时/分钟/秒。

date()