<?php
$start = (new DateTime('1 year ago'))->modify('first day of the month');
$end = (new DateTime())->modify('first day of the month');
$interval = new DateInterval('P1M');
$period = new DatePeriod($start, $interval, $end);
$months = array();
foreach ($period as $dt) {
$months[] = $dt->format('Y-m-d');
}
$reverse_months = array_reverse($months);
print_r($reverse_months);
Fatal error: Uncaught DateMalformedStringException: DateTime::modify(): Failed to parse time string (first day of the month) at position 13 (t): The timezone could not be found in the database in /in/E8c8k:2
Stack trace:
#0 /in/E8c8k(2): DateTime->modify('first day of th...')
#1 {main}
thrown in /in/E8c8k on line 2
Process exited with code 255.
Warning: DateTime::modify(): Failed to parse time string (first day of the month) at position 13 (t): The timezone could not be found in the database in /in/E8c8k on line 2
Warning: DateTime::modify(): Failed to parse time string (first day of the month) at position 13 (t): The timezone could not be found in the database in /in/E8c8k on line 3
Fatal error: Uncaught TypeError: DatePeriod::__construct() accepts (DateTimeInterface, DateInterval, int [, int]), or (DateTimeInterface, DateInterval, DateTime [, int]), or (string [, int]) as arguments in /in/E8c8k:5
Stack trace:
#0 /in/E8c8k(5): DatePeriod->__construct(false, Object(DateInterval), false)
#1 {main}
thrown in /in/E8c8k on line 5
Process exited with code 255.
Warning: DateTime::modify(): Failed to parse time string (first day of the month) at position 13 (t): The timezone could not be found in the database in /in/E8c8k on line 2
Warning: DateTime::modify(): Failed to parse time string (first day of the month) at position 13 (t): The timezone could not be found in the database in /in/E8c8k on line 3
Fatal error: Uncaught Exception: DatePeriod::__construct(): This constructor accepts either (DateTimeInterface, DateInterval, int) OR (DateTimeInterface, DateInterval, DateTime) OR (string) as arguments. in /in/E8c8k:5
Stack trace:
#0 /in/E8c8k(5): DatePeriod->__construct(false, Object(DateInterval), false)
#1 {main}
thrown in /in/E8c8k on line 5
Process exited with code 255.
Output for 5.5.24 - 5.5.35, 5.6.8 - 5.6.28
Warning: DateTime::modify(): Failed to parse time string (first day of the month) at position 13 (t): The timezone could not be found in the database in /in/E8c8k on line 2
Warning: DateTime::modify(): Failed to parse time string (first day of the month) at position 13 (t): The timezone could not be found in the database in /in/E8c8k on line 3
Fatal error: Uncaught exception 'Exception' with message 'DatePeriod::__construct(): This constructor accepts either (DateTimeInterface, DateInterval, int) OR (DateTimeInterface, DateInterval, DateTime) OR (string) as arguments.' in /in/E8c8k:5
Stack trace:
#0 /in/E8c8k(5): DatePeriod->__construct(false, Object(DateInterval), false)
#1 {main}
thrown in /in/E8c8k on line 5
Process exited with code 255.
Output for 5.4.0 - 5.4.45
Warning: DateTime::modify(): Failed to parse time string (first day of the month) at position 13 (t): The timezone could not be found in the database in /in/E8c8k on line 2
Warning: DateTime::modify(): Failed to parse time string (first day of the month) at position 13 (t): The timezone could not be found in the database in /in/E8c8k on line 3
Fatal error: Uncaught exception 'Exception' with message 'DatePeriod::__construct(): This constructor accepts either (DateTime, DateInterval, int) OR (DateTime, DateInterval, DateTime) OR (string) as arguments.' in /in/E8c8k:5
Stack trace:
#0 /in/E8c8k(5): DatePeriod->__construct(false, Object(DateInterval), false)
#1 {main}
thrown in /in/E8c8k on line 5
Process exited with code 255.