にわかプログラマの備忘録

仕事の過程で調べたことを忘れないように記載しています

【javasctipt】○営業日後を表示させる

f:id:sorane0908:20210827142603p:plain
javascriptで○日後(土日祝除く)を出力します。


<div id="main"></div>
let holiday = [//祝日もしくは除外したい日付を配列で設定
  [1,10],//1月
  [11,23],//2月
  [21],//3月
  [29],//4月
  [3,4,5],//5月
  [],//6月
  [],//7月
  [],//8月
  [20,23],//9月
  [],//10月
  [23],//11月
  [] //12月
]
let toDay = new Date();//今の日付を取得
let dis = document.getElementById('main');
let date = 2;//何日後にするかを設定
let i = 0;
while (i < date){
  let week = toDay.getDay();
  if(week == 0 || week == 6){//日曜と土曜は除外
    toDay.setDate(toDay.getDate() + 1);
    continue;
  }
  let month = toDay.getMonth();
  let day = toDay.getDate();
  for(let a = 0; a < holiday[month].length; a++){
    if(day == holiday[month][a]){//リストにある日付は除外
      toDay.setDate(toDay.getDate() + 1);
      continue;
    }
  }
  toDay.setDate(toDay.getDate() + 1);
  i++;
}
dis.innerHTML = toDay.toLocaleString();//HTMLに出力

祝日はjavascriptで取得できないので、手動でリストを作成してます。
そのため、過ぎた月の分は翌年分に書き換えていかないといけないです。

便宜上祝日と言っていますが、お店で使うなら定休日などを入れてもいいですし、曜日で休みなら土日の判定に追加することもできます。