繁体   English   中英

如何在PHP4中生成付款截止日期的列表?

[英]How can I generate a list of pay-period-ending dates in PHP4?

我看到所有好的日期/时间函数都仅是PHP5,这使这一点变得很困难。 我需要生成一个所有薪资截止日期的列表,该日期从52周开始,到将来的一个薪资期间,每两周一次。

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

如果日期与付款期的结束日期是同一天,则我要包括下一个付款期:如果下一个付款期的结束日期是2010年6月26日,今天是2010年6月26日 ,我希望列出以(大约) 2009年 6月26 至2010年7月10日结束。

因此,这里是电话:

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

显然,那是我想要的日期的近似值。 最好是自纪元后的秒数。

仅使用PHP 4.3中可用的工具来执行此操作的最佳方法是什么?

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

可能不完全准确,但是您应该了解一下。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM