「国民の祝日に関する法律」があり、日本の祝日、休日について定められています。
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 "";
}
//休日(祝日と日曜日と振替休日)を判定する関数。
//休日ならばその名称、休日でなければ空文字を返す。
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 "";
}
コメント
[…] 以前、「JavaScriptで休日を判定する関数」を紹介しましたが、今回はそのPython版です。 […]
[…] 以前、「JavaScriptで休日を判定する関数」を紹介しましたが、今回はそのPHP版です。 […]