根据今天的日期确定下一个支付日期
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
更新为当前日期。
我的雇主每两周在星期五支付一次工资。
假设开始日期是 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
更新为当前日期。