Getting last month's date in php

前端 未结 18 703
心在旅途
心在旅途 2020-11-29 00:22

I want to get last month\'s date. I wrote this out:

$prevmonth = date(\'M Y\');

Which gives me the current month/year. I can\'t tell if I

相关标签:
18条回答
  • 2020-11-29 00:39

    This question is quite old but here goes anyway. If you're trying to get just the previous month and the day does not matter you can use this:

    $date = '2014-01-03';
    
    $dateTime = new DateTime($date);
    
    $lastMonth = $dateTime->modify('-' . $dateTime->format('d') . ' days')->format('F Y');
    
    echo $lastMonth; // 'December 2013'
    
    0 讨论(0)
  • 2020-11-29 00:43
    echo date('Y',strtotime("-1 year"));        //last year<br>
    echo date('d',strtotime("-1 day"));     //last day<br>
    echo date('m',strtotime("-1 month"));       //last month<br>
    
    0 讨论(0)
  • 2020-11-29 00:46

    If you want to get first date of previous month , Then you can use as like following ... $prevmonth = date('M Y 1', strtotime('-1 months')); what? first date will always be 1 :D

    0 讨论(0)
  • 2020-11-29 00:50
    echo strtotime("-1 month");
    

    That will output the timestamp for last month exactly. You don't need to reset anything afterwards. If you want it in an English format after that, you can use date() to format the timestamp, ie:

    echo date("Y-m-d H:i:s",strtotime("-1 month"));
    
    0 讨论(0)
  • 2020-11-29 00:50

    Incorrect answers are:

    $lastMonth = date('M Y', strtotime("-1 month"));
    $lastDate = date('Y-m', strtotime('last month'));
    

    The reason is if current month is 30+ days but previous month is 29 and less $lastMonth will be the same as current month.

    e.g.

    If $currentMonth = '30/03/2016';
    echo $lastMonth = date('m-Y', strtotime("-1 month")); => 03-2016
    echo $lastDate = date('Y-m', strtotime('last month')); => 2016-03
    

    The correct answer will be:

    echo date("m-Y", strtotime("first day of previous month")); => 02-2016
    echo sprintf("%02d",date("m")-1) . date("-Y"); => 02-2016
    echo date("m-Y",mktime(0,0,0,date("m")-1,1,date("Y"))); => 02-2016
    
    0 讨论(0)
  • 2020-11-29 00:50

    Oh I figured this out, please ignore unless you have the same problem i did in which case:

    $prevmonth = date("M Y",mktime(0,0,0,date("m")-1,1,date("Y")));
    
    0 讨论(0)
提交回复
热议问题