如何在PHP4中生成付款期限结束日期列表?

时间:2010-06-24 17:54:27

标签: php date php4

我看到所有好的日期/时间函数都只是PHP5,这使得这很难。我需要生成所有支付期结束日期的列表,从52周开始,到将来的一个支付期,每两周一次。

因此,假设下一个支付期结束于2010年6月26日,今天是2010年6月23日,我想要一个以(大约)6月26日 2009 开头并以6月结束的清单26,2010。

如果日期与付款期结束的当天相同,我想要包括下一个:如果下一个付款期结束于2010年6月26日,今天 2010年6月26日,我想要一个以(大约)6月26日 2009 开头并于2010年7月10日结束的列表。

所以,这是电话:

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

显然,这是我想要的日期的近似值。优选地,自纪元以来的几秒钟内。

使用PHP 4.3中提供的工具,最好的方法是什么?

1 个答案:

答案 0 :(得分:2)

您可以使用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";
}

可能不完全准确,但你应该明白这一点。