How to get the previous and next month?

前端 未结 8 671
旧巷少年郎
旧巷少年郎 2021-01-02 04:01
$year  = 2010;
$month = 10;

How do I get the previous month 2010-09 and next month 2010-11?

相关标签:
8条回答
  • 2021-01-02 04:06
    $date = mktime( 0, 0, 0, $month, 1, $year );
    echo strftime( '%B %Y', strtotime( '+1 month', $date ) );
    echo strftime( '%B %Y', strtotime( '-1 month', $date ) );
    
    0 讨论(0)
  • 2021-01-02 04:06

    You can just add 1 to the current month and then see if you crossed the year:

    $next_year  = $year;
    $next_month = ++$month;
    
    if($next_month == 13) {
      $next_month = 1;    
      $next_year++;
    }
    

    Similarly for previous month you can do:

    $prev_year  = $year;
    $prev_month = --$month;
    
    if($prev_month == 0) {
      $prev_month = 12;
      $prev_year--;
    }
    
    0 讨论(0)
  • 2021-01-02 04:12
         echo date('Y-m-d', strtotime('next month'));
    
    0 讨论(0)
  • 2021-01-02 04:13
     setlocale(LC_TIME,"turkish");
     $Currentmonth=iconv("ISO-8859-9","UTF-8",strftime('%B'));
     $Previousmonth=iconv("ISO-8859-9","UTF-8",strftime('%B',strtotime('-1 MONTH')));
     $Nextmonth=iconv("ISO-8859-9","UTF-8",strftime('%B',strtotime('+1 MONTH')));
    
    echo $Previousmonth; // Şubat /* 2017-02 */
    echo $Currentmonth; // Mart /* 2017-03 */
    echo $Nextmonth; // Nisan /* 2017-04 */
    
    0 讨论(0)
  • 2021-01-02 04:14

    try it like this:

    $date = mktime(0, 0, 0, $month, 1, $year);
    echo date("Y-m", strtotime('-1 month', $date));
    echo date("Y-m", strtotime('+1 month', $date));
    

    or, shorter, like this:

    echo date("Y-m", mktime(0, 0, 0, $month-1, 1, $year));
    echo date("Y-m", mktime(0, 0, 0, $month+1, 1, $year));
    
    0 讨论(0)
  • 2021-01-02 04:14
    $prevMonth = $month - 1;
    $nextMonth = $month + 1;
    $prevYear = $year;
    $nextYear = $year;
    
    if ($prevMonth < 1) {
        $prevMonth = 1;
        $prevYear -= 1;
    }
    
    if ($nextMonth > 12) {
        $nextMonth = 1;
        $nextYear += 1
    }
    

    or

    // PHP > 5.2.0
    $date = new DateTime();
    $date->setDate($year, $month, 1);
    $prevDate = $date->modify('-1 month');
    $nextDate = $date->modify('+1 month');
    // some $prevDate->format() and $nextDate->format() 
    
    0 讨论(0)
提交回复
热议问题