【问题标题】:How can I generate a list of pay-period-ending dates in PHP4?如何在 PHP4 中生成支付期结束日期列表?
【发布时间】:2010-06-25 03:06:20
【问题描述】:

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

因此,假设下一个支付期结束于 2010 年 6 月 26 日,而今天是 2010 年 6 月 23 日,我想要一个从(大约)2009 年 6 月 26 日开始并以 6 月结束的列表2010 年 2 月 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 听起来很可行

标签: php date php4


【解决方案1】:

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

可能不完全准确,但您应该明白。

【讨论】:

  • 这并没有告诉我如何找到当前日期之后的第一个支付期日期;有没有简单的方法可以做到这一点?
  • 第一个支付周期日期的业务规则是什么?
  • 更容易描述最后一个支付期的日期,但都是根据特定日期来描述的。 1. 已知2010-06-26是支付期结束日期。 2. 从任何给定日期开始的下一个支付周期日期是给定日期之后的日期,该日期是距已知日期 2 周周期的倍数。可能有一种更优雅的方式来构建该描述,但我不确定它会是什么。
猜你喜欢
  • 1970-01-01
  • 2015-05-15
  • 1970-01-01
  • 2014-03-12
  • 1970-01-01
  • 2023-02-02
  • 2017-05-31
  • 2017-03-22
  • 2017-03-23
相关资源
最近更新 更多