Как я могу создать список дат окончания периода оплаты в PHP4? - PullRequest
0 голосов
/ 24 июня 2010

Я вижу, что все хорошие функции даты / времени - только PHP5, что делает это затруднительным.Мне нужно сгенерировать список всех дат окончания платежного периода, начиная с 52 недель назад и переходя к одному платежному периоду в будущем с двухнедельными периодами.

Итак, предположим, что окончание следующего платежного периода заканчивается26 июня 2010 г., а сегодня 23 июня 2010 г., я бы хотел, чтобы список начинался с (приблизительно) 26 июня 2009 и заканчивался 26 июня 2010 г.

Если датасовпадает с днем ​​окончания периода оплаты, я хочу включить следующий: если следующий период окончания выплаты - 26 июня 2010 года, а сегодня - 26 июня 2010 года , я бы хотел, чтобы список начиналсяс (приблизительно) 26 июня 2009 и заканчивается 10 июля 2010 года.

Итак, вот вызов:

>>> get_pay_period_ending_dates($timeInSecondsFromEpoch);
[
  $date52weeksBeforeTheNextPayPeriodEnding,
  $date50weeksBeforeTheNextPayPeriodEnding,
  ...
  $nextPayPeriodEnding
]

Очевидно, этоприближение дат, которые я хочу.Желательно, в считанные секунды с начала эпохи.

Как лучше всего это сделать, используя только инструменты, доступные в PHP 4.3?

1 Ответ

2 голосов
/ 24 июня 2010

С помощью strtotime() вы можете сделать очень много.Это немного грязно, но все просто.

$startDate = strtotime('June 26, 2010');

for($i = 0; $i <= 52; $i+=2) {
  echo date('m-d-y', strtotime("-$i weeks", $startDate)), "\n";
}

Я считаю, что это хорошая отправная точка / подтверждение концепции.

Обновление с вычислением даты начала:

function startDate($date) {
  $knownDate = strtotime('June 26, 2010');
  $diff = $date - $knownDate;
  $weeks = 2 * ceil($diff / (60*60*24*7*2));
  return strtotime("$weeks weeks", $knownDate);
}

$startDate = startDate(strtotime('June 26, 2011'));

for($i = 0; $i <= 52; $i+=2) {
  echo date('m-d-y', strtotime("-$i weeks", $startDate)), "\n";
}

Может быть, не совсем точен, но вы должны понять.

...