Я могу показать дни с текущей даты до следующих трех месяцев с помощью этого кода:
$begin = new DateTime(); $end = new DateTime(date('Ym-d', strtotime('+3 months', strtotime(date("dmY"))))); $interval = DateInterval::createFromDateString('1 day'); $days = new DatePeriod($begin, $interval, $end); foreach ( $days as $day ) { ... }
Я чувствую, что код можно укоротить, особенно для $end
. Не могли бы вы помочь?
О, я также хочу получить предыдущие 3 месяца. Я изменил '+3 months'
на '-3 months'
но не повезло. Есть идеи?
Для вашего первого вопроса вы можете напрямую писать
$end = new DateTime('+3 months');
Чтобы вернуться назад 3 месяца, используйте 3 months ago
вместо -3 months
.
$begin = new DateTime(); $end = new DateTime('+ 3 months'); $interval = DateInterval::createFromDateString('1 day'); $days = new DatePeriod($begin, $interval, $end); foreach ( $days as $day ) { var_dump($day); } $begin = new DateTime('- 3 months'); // '3 months ago' should also work $end = new DateTime(); $interval = DateInterval::createFromDateString('1 day'); $days = new DatePeriod($begin, $interval, $end); foreach ( $days as $day ) { var_dump($day); }