PHP date() and strtotime() return wrong months on 31st

PHP Frameworks

On 31st of every month you will get a wrong month value while using date() or strtotime() functions.

In that case you need to pass the date of the first day of the current month as a second parameter to the strtotime() function.

For example:

$base_month = strtotime(date('Y-m',time()) . '-01 00:00:01');
echo date('Y-m',strtotime('-1 months', $base_month));
echo date('Y-m',strtotime('-2 months', $base_month));
echo date('Y-m',strtotime('-3 months', $base_month));

Leave a Reply

Your email address will not be published. Required fields are marked *