根据今天的日期确定下一个支付日期

Determine Next Pay Date Based On Today's Date

我的雇主每两周在星期五支付一次工资。

假设开始日期是 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";

从今天开始获取下一个星期五(即使今天是星期五):

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

你的做法是正确的,你唯一需要的是在数据库中存储最后一个付款日期,并以此为基础计算下一个付款日期,然后不管代码何时执行,下一个付款日期是根据最晚付款日期:

$nextPayDay = (clone $lastPayDay)->modify('Friday + 2 weeks');

如果代码 运行 是付款当天,请确保 $lastPayDay 更新为当前日期。