-4

I have $date1 = '2014-09-01' and $date2 = '2015-02-01'. Can I get months and years from $date1 to $date2 like this:

  • 2014-sep
  • 2014-oct
  • 2014-nov
  • 2014-dec
  • 2015-jan
  • 2015-feb
rink.attendant.6
  • 44,500
  • 61
  • 101
  • 156
Arif Hidayat
  • 67
  • 1
  • 9

3 Answers3

3

Instantiate DateTime objects and loop through them:

$date1 = new \DateTime('2014-09-01');
$date2 = new \DateTime('2015-02-01');

while ($date1 <= $date2) {
    echo $date1->format('Y-M') . '<br>';
    $date1->add(new \DateInterval('P1M')); // increase by one month
}

Result:

2014-Sep
2014-Oct
2014-Nov
2014-Dec
2015-Jan
2015-Feb
rink.attendant.6
  • 44,500
  • 61
  • 101
  • 156
1
$date1 = new DateTime("2014-09-01");
$date2 = new DateTime("2015-02-01");

while ($date1 <= $date2) {

    echo $date1->format("Y-M")."\n";
    $date1->modify("+1 month");
}

Result:

2014-Sep
2014-Oct
2014-Nov
2014-Dec
2015-Jan
2015-Feb
Mooseknuckles
  • 497
  • 3
  • 7
0

Use DateTime and DateInterval class with couple of methods like add() to increment counter and format() to date formating using simple while loop

$startDate= new DateTime("2014-09-01");
$endDate = new DateTime("2015-02-01");
$oneMonth=new DateInterval('P1M');      //for 1 month interval

while ($startDate <= $endDate) {
  print $startDate->format("Y-M")."\n";  //date formating as your requirement
  $startDate->add($oneMonth);          //increment counter by 1 month
 }
A l w a y s S u n n y
  • 36,497
  • 8
  • 60
  • 103