skip to Main Content

I have a code in PHP 5.5.11 where I am trying to do the following:

  1. Get today’s date in a variable –> $today
  2. Calculate the end of month from a date in a form –> $st_dt_eom

if difference between these 2 dates is more than 5 days then execute a code. The code in the if condition below does not execute.


$today= date();

if($_POST['Submit']=='SAVE')
 {
    $st_dt=YYYYMMDD($_POST['st_dt'],"-"); 
    $st_dt_eom= datetime::createfromformat('YYYYMMDD',$st_dt);;
    $st_dt_eom->modify('last day of this month');
    $diff = $today->diff($st_dt_eom);
    $diffDays= intval($diff->format("%d")); //to get integer number of days

    if($diffDays>5){

     
     redirect("index.php");
     
}

}

2

Answers


  1. A few suggestions to improve your code and produce something workable:

    <?php
    
    // Instead of using date(), use a DateTime() then you're comparing two DateTimes later on
    $today = new DateTime();
    
    // I'm assuming that your YYYYMMDD function removes "-" from the $_POST['st_dt'] 
    // to provide a date in the format YYYYMMDD (or Ymd in PHP). 
    // Unfortunately, DateTime doesn't understand that format. 
    // So I'd change this for keeping Y-m-d (YYYY-MM-DD).
    // Or modify your code to return that format!
    $st_dt = $_POST['st_dt'];
    
    // Watch out for your cAsE when using PHP functions! 
    $st_dt_eom = DateTime::createFromFormat('Y-m-d',$st_dt);
    
    $st_dt_eom->modify('last day of this month');
    $diff = $today->diff($st_dt_eom);
    $diffDays= intval($diff->format("%d"));
    if($diffDays > 5){
       redirect("index.php");
    }
    
    Login or Signup to reply.
  2. An example:

    // 2022-12-19
    $today = date('Y-m-d');
    
    // $_POST['st_dt']
    $st_dt = '2022-12-31';
    
    function dateDiffDays($today, $st_dt)
    {
        $today_obj= DateTime::createfromformat('Y-m-d', $today);
        $st_dt_eom= DateTime::createfromformat('Y-m-d', $st_dt);
    
        $diff = $today_obj->diff($st_dt_eom);
    
        return $diff->days;
    }
    
    // int(12)
    $res = dateDiffDays($today, $st_dt);
    

    use var_dump to locate your bug.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search