JavaScriptで休日を判定する関数

Pocket

「国民の祝日に関する法律」があり、日本の祝日、休日について定められています。
JavaScriptで休日、すなわち祝日と日曜日と振替休日を判定する関数を作りました。
前にJavaScriptで祝日を判定する関数で紹介したgetNationalHolidayが必要です。
今回紹介するgetHolidayはgetNationalHolidayで取得した祝日と日曜日の関係から振替休日を判定しています。

function getHoliday(dateobj) {
  //休日(祝日と日曜日と振替休日)を判定する関数。
  //休日ならばその名称、休日でなければ空文字を返す。
  var kyujitsu = "休日";
  var isNH = [];
  var isSun = [];
  var holidayname = [];
  var thisday, i;
  if(dateobj.getFullYear() < 2007) {
    throw new Error("2007年以上にしてください。");
  }
  for(i = -3; i < 2; i++) {
    thisday = new Date(
      dateobj.getFullYear(),
      dateobj.getMonth(),
      dateobj.getDate() + i);
    holidayname[i] = getNationalHoliday(thisday);
    isNH[i] = (holidayname[i] != "");
    isSun[i] = thisday.getDay() === 0 ? true : false;
  }
  //国民の祝日に関する法律第三条
  //第1項 「国民の祝日」は、休日とする。
  if(isNH[0]) {
    return holidayname[0];
  }
  //第2項 「国民の祝日」が日曜日に当たるときは、
  //その日後においてその日に最も近い「国民の祝日」でない日を
  //休日とする。
  if(isSun[-1] && isNH[-1]) {
    return kyujitsu;
  }
  if(isSun[-2] && isNH[-2] && isNH[-1]) {
    return kyujitsu;
  }
  if(isSun[-3] && isNH[-3] && isNH[-2] && isNH[-1]) {
    return kyujitsu;
  }
  //第3項 その前日及び翌日が「国民の祝日」である日は、休日とする。
  if(isNH[-1] && isNH[1]) {
    return kyujitsu;
  }
  //日曜日
  if(isSun[0]) {
    return "日曜日";
  }
  return "";
}

[ 2014年8月8日 | カテゴリー: JavaScript | タグ: , , ]

« | »

コメント

  1. […] 以前、「JavaScriptで休日を判定する関数」を紹介しましたが、今回はそのPython版です。 […]

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

送信してください。


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報