您好我已经在使用其他问题的代码了 - 在周末的情况下,这会增加两天的结束日
function add_business_days($startdate,$buisnessdays,$holidays,$dateformat){
$i=1;
$dayx = strtotime($startdate);
while($i < $buisnessdays){
$day = date('N',$dayx);
$datex = date('Y-m-d',$dayx);
if($day < 6 && !in_array($datex,$holidays))$i++;
$dayx = strtotime($datex.' +1 day');
}
return date($dateformat,$dayx);
}
此函数构成json输出的一部分,该输出显示在jquery日历中 - 它获取startdate和enddate并呈现它。
是否有可能创建一个返回输出的代码,以便在周末创建结束日期时,跳到星期一会创建一个开始日期,然后一直持续到达到原始给定的结束日期?
x = date('w');
if (x != 6) {
while (x != 6) {
//start adding days to start date
}
} else {
//create new enddate = current iteration of dates currentdate;
//then new start (add two days to it to get to monday) currentdate + 2 = newstartdate
//redo above till you get to original end date
答案 0 :(得分:2)
我不是100%确定问题/功能在做什么,但是(如果我猜对了)这是一个想法。
function add_business_days($startdate, $businessdays, $holidays, $dateformat)
{
$start = new DateTime($startdate);
$date = new DateTime($startdate);
$date->modify("+{$businessdays} weekdays");
foreach ($holidays as $holiday) {
$holiday = new DateTime($holiday);
// If holiday is a weekday and occurs within $businessdays of the $startdate
if ($holiday->format('N') < 6 && $holiday >= $start && $holiday <= $date) {
$date->modify("+1 weekday");
}
}
return $date->format($dateformat);
}
逻辑基本上将$businessdays
个工作日添加到开始日期;然后检查日期范围内的任何假期,如果确实发生任何假期,则最终日期会根据需要增加。