Увеличение PHP Даты - PullRequest
       2

Увеличение PHP Даты

0 голосов
/ 25 февраля 2012

Я пишу часть приложения, где пользователь может добавить событие, которое охватывает несколько дней.Таким образом, я получаю в сообщениях $ begindate, $ enddate и $ type.Тип будет ежедневным, еженедельным или ежемесячным.Я пытаюсь обработать запрос на день прямо сейчас.Что мне нужно сделать, так это вставить в мою таблицу дат строку для каждого дня, включая начало, конец и каждый промежуточный день, если выбрана ежедневная.Поскольку месяцы имеют разное количество дней, очевидно, и я не могу просто добавить 1 или 7 к дневной части даты php, как бы я подошел к этому?

Я делаю

$begindate = date('Y-m-D', strtotime($begindate))

для всех дат, когда я получаю сообщение.

Я не слишком много работал с объектами дат PHP, любая помощь будет признательна.

Ответы [ 2 ]

3 голосов
/ 25 февраля 2012

Во-первых, используйте класс DateTime , если это возможно.Затем проверьте DateTime :: add () .

. Кроме того, класс DatePeriod может автоматически создавать серию объектов DateTime с заданным интервалом, чтонамного упростит прием различных интервалов повторения:

$start = new \DateTime($beginDate);
$end = new \DateTime($endDate);
$interval = new \DateInterval('P1D');
$period = new \DatePeriod($start, $interval, $end);
foreach ($period as $day) {
    // will iterate over each day in the period
}

DateTime действительно достаточно гибок в строках, которые он принимает в своем конструкторе (посмотрите ссылку здесь ), что делаетдовольно просто получить даты с сегодняшнего дня.Например, если вам нужен объект DateTime, представляющий одну неделю с этого момента, $date = new \DateTime('+1 week'); сделает это за вас.

2 голосов
/ 25 февраля 2012
$days = 1; // Or 7 or 30, or anything..
$nextday = date('Y-m-D', strtotime($begindate) + 86400 * $days);

Или используйте DateTime объект.

$days = 1; // Or again 7.. or 30..

$begin = new DateTime($begindate);
$begin->add(new DateInterval('P' . $days . 'D'));
$nextday = $date->format('Y-m-D');

Если вам нужно добавить дополнительные недели или месяцы, проверьте DateInterval для подробностей.

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