我看到所有好的日期/时间函数都只是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中提供的工具,最好的方法是什么?
答案 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";
}
可能不完全准确,但你应该明白这一点。