increment date by one month

前端 未结 18 2291
广开言路
广开言路 2020-11-27 04:14

Let\'s say I have a date in the following format: 2010-12-11 (year-mon-day)

With PHP, I want to increment the date by one month, and I want the year to be automatica

相关标签:
18条回答
  • 2020-11-27 04:35

    I use this way:-

     $occDate='2014-01-28';
     $forOdNextMonth= date('m', strtotime("+1 month", strtotime($occDate)));
    //Output:- $forOdNextMonth=02
    
    
    /*****************more example****************/
    $occDate='2014-12-28';
    
    $forOdNextMonth= date('m', strtotime("+1 month", strtotime($occDate)));
    //Output:- $forOdNextMonth=01
    
    //***********************wrong way**********************************//
    $forOdNextMonth= date('m', strtotime("+1 month", $occDate));
      //Output:- $forOdNextMonth=02; //instead of $forOdNextMonth=01;
    //******************************************************************//
    
    0 讨论(0)
  • 2020-11-27 04:37

    I needed similar functionality, except for a monthly cycle (plus months, minus 1 day). After searching S.O. for a while, I was able to craft this plug-n-play solution:

    function add_months($months, DateTime $dateObject) 
        {
            $next = new DateTime($dateObject->format('Y-m-d'));
            $next->modify('last day of +'.$months.' month');
    
            if($dateObject->format('d') > $next->format('d')) {
                return $dateObject->diff($next);
            } else {
                return new DateInterval('P'.$months.'M');
            }
        }
    
    function endCycle($d1, $months)
        {
            $date = new DateTime($d1);
    
            // call second function to add the months
            $newDate = $date->add(add_months($months, $date));
    
            // goes back 1 day from date, remove if you want same day of month
            $newDate->sub(new DateInterval('P1D')); 
    
            //formats final date to Y-m-d form
            $dateReturned = $newDate->format('Y-m-d'); 
    
            return $dateReturned;
        }
    

    Example:

    $startDate = '2014-06-03'; // select date in Y-m-d format
    $nMonths = 1; // choose how many months you want to move ahead
    $final = endCycle($startDate, $nMonths); // output: 2014-07-02
    
    0 讨论(0)
  • 2020-11-27 04:37

    If you want to get the date of one month from now you can do it like this

    echo date('Y-m-d', strtotime('1 month'));
    

    If you want to get the date of two months from now, you can achieve that by doing this

    echo date('Y-m-d', strtotime('2 month'));
    

    And so on, that's all.

    0 讨论(0)
  • 2020-11-27 04:39
    $time = strtotime("2010.12.11");
    $final = date("Y-m-d", strtotime("+1 month", $time));
    
    // Finally you will have the date you're looking for.
    
    0 讨论(0)
  • Just updating the answer with simple method for find the date after no of months. As the best answer marked doesn't give the correct solution.

    <?php
    
        $date = date('2020-05-31');
        $current = date("m",strtotime($date));
        $next = date("m",strtotime($date."+1 month"));
        if($current==$next-1){
            $needed = date('Y-m-d',strtotime($date." +1 month"));
        }else{
            $needed = date('Y-m-d', strtotime("last day of next month",strtotime($date)));
        }
        echo "Date after 1 month from 2020-05-31 would be : $needed";
    
    ?>
    
    0 讨论(0)
  • 2020-11-27 04:42

    Please first you set your date format as like 12-12-2012

    After use this function it's work properly;

    $date =  date('d-m-Y',strtotime("12-12-2012 +2 Months");
    

    Here 12-12-2012 is your date and +2 Months is increment of the month;

    You also increment of Year, Date

    strtotime("12-12-2012 +1 Year");
    

    Ans is 12-12-2013

    0 讨论(0)
提交回复
热议问题