PHP Day итератор - PullRequest
       6

PHP Day итератор

0 голосов
/ 26 ноября 2010

Я могу показать дни с текущей даты до следующих 3 месяцев с этим кодом:

$begin = new DateTime();
$end = new DateTime(date('Y-m-d', strtotime('+3 months', strtotime(date("d-m-Y")))));
$interval = DateInterval::createFromDateString('1 day');
$days = new DatePeriod($begin, $interval, $end);

foreach ( $days as $day ) {
    ...
}

Я чувствую, что код может быть сокращен специально для $end. Не могли бы вы помочь?

О, я тоже хочу получить предыдущие 3 месяца. Я изменил '+3 months' на '-3 months', но не повезло. Есть идеи?

Ответы [ 2 ]

5 голосов
/ 26 ноября 2010
$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);
}
1 голос
/ 26 ноября 2010

В качестве первого вопроса вы можете написать

$end = new DateTime('+3 months');

Чтобы вернуться на 3 месяца назад, используйте 3 months ago вместо -3 months.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...