きんときんの技術メモ

日々の業務で学んだ技術を中心に書きます。CentOS7で作業すること多め。

【PHP】休日を省いた日付処理

現在日付から4営業日後の日付を取得するロジックを作りました。

//本日から4営業日後の計算

$setbizDays = 4; //何営業日後かを設定
$offdays = array('Sat','Sun'); //土、日を配列に格納
$holidays = array('2018-03-21','2018-04-29','2018-04-30','2018-05-03','2018-05-04','2018-05-05','2018-07-16','2018-08-11','2018-09-17','2018-09-23','2018-09-24','2018-10-08','2018-11-03','2018-11-23','2018-12-23','2018-12-24'); //休日を配列に格納
$fourbizDays = date("Y-m-d"); //現在日付を設定
$fourbizDaystmp = date("Y-m-d"); //処理用に現在日付を設定

$i = 1;
$j = $setbizDays;

//現在日付から1日単位で休日かを判定する
while($i <= $j){
$tmp = strtotime($fourbizDaystmp . " + $i day ");
if(in_array(date("D", $tmp), $offdays) ||
in_array(date("Y-m-d", $tmp), $holidays)){
$i++;
$j++;
}else{
$i++;
}

$fourbizDays = date("Y-m-d", strtotime($fourbizDays . " + 1 day ")); 
}

あとは、$fourbizDaysを表示させるなり、煮るなり焼くなりすればOK!

$holidaysはGoogleのカレンダーAPIから取得したいですね。。