4

I' m trying to make a ajax calendar with multiple tabs for a date range previously entered. But for example:

I want get the next month, it prints march instead of february

$start= "2013-01-31";
$current =  date('n', strtotime("+1 month",$start)) //prints 3

I think thats occurs because february 2014 is 28 and add +31 like base from the start month but why?

Naftali
  • 144,921
  • 39
  • 244
  • 303

1 Answers1

8

You're trying to add one month to the date 2013-01-31. It should give 31th Feburary 2013, but since the date doesn't exist, it moves on to the next valid month (which is March).

You can use the following work-around:

$current = date('n', strtotime("first day of next month",strtotime($start)));

Using DateTime class:

$date = new DateTime('2013-01-31');
$date->modify('first day of next month');
echo $date->format('n');

This will correctly output 2.

Demo!

Amal Murali
  • 75,622
  • 18
  • 128
  • 150