我的雇主在星期五每两周付款一次。
假设开始日期是4月14日。
以下付款日期为: 4月28日 5月12日 5月26日等等......
我希望能够以相对于CURDATE()的数据库的日期时间格式插入下一个支付日。
示例: 如果代码在5月22日运行,则条目为2017-05-26 00:00:00
如果代码在6月1日运行,则条目为2017-06-09 00:00:00
如果代码在支付日的同一天运行,它将恢复到下一个支付日。
同一天示例: 如果代码在6月9日运行,则条目为2017-06-23 00:00:00
我尝试过的事情:
更新
$StartDate = strtotime('2017-05-12'); //Start date from which we begin count
$CurDate = date("Y-m-d"); //Current date.
$NextDate = date("Y-m-d", strtotime("+2 week", $StartDate)); //Next date = +2 week from start date
$tomorrow = date('Y-m-d',strtotime($CurDate . "+1 days"));
if($CurDate == $NextDate){$CurDate = $tomorrow;}
while ($CurDate > $NextDate ) {
$NextDate = date("Y-m-d", strtotime("+2 week", strtotime($NextDate)));
}
echo date("Y-m-d", strtotime($NextDate)), "\n";
答案 0 :(得分:1)
从今天开始接下来的星期五(即使今天是星期五):
echo date('Y-m-d', strtotime('next friday'));
从下一个星期五开始:
$start = strtotime('April 14');
echo date('Y-m-d', strtotime('next friday', $start));
要获得下周五加一周:
$start = strtotime('April 14');
echo date('Y-m-d', strtotime('next friday +1 week', $start));
有很多种可能性,或查看DateTime Class。
答案 1 :(得分:1)
您的方法是正确的,唯一需要的是在数据库中存储最后一个付款日期,并根据此计算下一个,然后在执行代码时无关紧要,下一个付款日期是根据最新的计算的付款日期:
$nextPayDay = (clone $lastPayDay)->modify('Friday + 2 weeks');
如果代码在付款当天运行,请确保使用当前日期更新$lastPayDay
。