2010-08-01 6 views
0

Мне нужно немного помочь с помощью symfony рассчитать дату окончания. Пользователь будет выбирать дату начала, частоту (например, каждые 7 дней, каждые 14 дней, каждый месяц, полугодие - каждые 6 месяцев и т. Д.) И количество вхождений.Расчет даты окончания

Примеры:

Start date: 08/01/2010 
Frequency: Every 7 days 
Occurrences: 4 
End Date = 08/29/2010 

Start date: 08/01/2010 
Frequency: Every Month 
Occurrences: 3 
End Date = 11/01/2010 

Некоторые Notes- Наш сервер работает под управлением PHP 5.2.13 и Symfony 1.1. Не требуется, чтобы я использовал symfony для настройки даты, пока я могу вернуть ее в формат, который может подтвердить проверка symfony.

Заранее спасибо.

ответ

4

Вы можете использовать strtotime для этого, например.

echo date("Y-m-d", strtotime("+1 month", strtotime("2010-08-06"))); 

дает 2010-09-06.

Конечно, вам нужно будет умножить «+1 месяц» на количество вхождений, чтобы оно стало, например, «+7 месяцев» для 7 случаев.

В качестве альтернативы (более простой, но менее эффективный), вы можете использовать фиксированный интервал (например, «+1 месяц») и использовать for цикл:

$end = $start = strtotime("2010-08-06"); 
for ($i = 1; $i <= $occurrences; $i++) { 
    $end = strtotime("+1 month", $end); 
} 
+0

И как бы я получить результат обратно в формат $ end ['year'], $ end ['month'], $ end ['day']? – clang1234

+0

@clang '$ end = array ('day' => date (" d ", $ end), 'month' => ...)' – Artefacto

+0

Wonderful. Спасибо за быструю помощь. – clang1234

Смежные вопросы