PHP営業日は月曜日に新しい開始日を作成し、週末で停止します
質問
週末の場合でenddayに2つの余分な日を追加します -
こんにちは、すでに私は別の質問から、このコードを使用しています
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);
}
jQueryのカレンダーに表示されているJSON出力のこの機能は一部を形成する - それは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
解決
(私は正しく推測している場合)
私は質問/機能が実際にやっているかについて確認してください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
平日が追加されます。任意の休日が発生した場合は、日付の範囲内の任意の祝日のためのチェックは、最終的な日付は、必要に応じてインクリメントされる。
所属していません StackOverflow