是否有人有PHP代码段来计算给定日期的下一个工作日?
例如,如何转换YYYY-MM-DD以找出下一个工作日?
例子:
对于03.04.2011(DD-MM-YYYY),下一个工作日是04.04.2011。
对于08.04.2011,下一个工作日是2011年4月11日。
这是包含我需要知道下一个工作日的日期的变量
$cubeTime['time'];
变量包含:2011-04-01
摘要的结果应为:2011-04-04
最佳答案
下个工作日
这将从特定日期(不包括星期六或星期日)中查找下一个工作日:
echo date('Y-m-d', strtotime('2011-04-05 +1 Weekday'));
您当然也可以使用日期变量来完成此操作:
$myDate = '2011-04-05';
echo date('Y-m-d', strtotime($myDate . ' +1 Weekday'));
更新:或者,如果您可以访问PHP's DateTime class(很有可能):
$date = new DateTime('2018-01-27');
$date->modify('+7 weekday');
echo $date->format('Y-m-d');
想跳过假期吗?:
尽管原始海报提到“我不需要考虑假期”,但是如果您确实想忽略假期,请记住-“假期”只是您不希望包含的任何日期的数组,并且因国家/地区而异,地区,公司,人员...等。
只需将上面的代码放入一个函数中,该函数将排除/循环超出您不希望包含的日期。像这样的东西:
$tmpDate = '2015-06-22';
$holidays = ['2015-07-04', '2015-10-31', '2015-12-25'];
$i = 1;
$nextBusinessDay = date('Y-m-d', strtotime($tmpDate . ' +' . $i . ' Weekday'));
while (in_array($nextBusinessDay, $holidays)) {
$i++;
$nextBusinessDay = date('Y-m-d', strtotime($tmpDate . ' +' . $i . ' Weekday'));
}
我确信,如果需要,可以简化或缩短上面的代码。我试图以一种易于理解的方式编写它。