改編対策本部の10年カレンダーで使用している祝日判定JavaScript


function JapaneseHoliday(myTime) {
    var myYear = myTime.getFullYear();
    var myMonth = myTime.getMonth() + 1;
    var myDate = myTime.getDate();
    var myHolidayShiko = new Date(1873, 9, 14, 0, 0, 0);
    var myWeekDay = myTime.getDay() + 1;
    var myVernalEquinox, myAutumnalEquinox;
    if (myTime < myHolidayShiko) {
        return("");
    } else {
        switch (myMonth) {
            case 1: // 1月
                switch (myDate) {
                    case 1: // 1月1日
                        if (myYear > 1948) {
                            return("元日");
                        } else;
                        break;
                    case 2: // 1月2日
                        if (myWeekDay == 2) {
                            if (myYear > 1973) {
                                return("振替休日");
                            } else;
                        } else;
                        break;
                    case 3: // 1月3日
                        if (myYear <= 1948) {
                            return("元始祭");
                        } else;
                        break;
                    case 5: // 1月5日
                        if (myYear <= 1948) {
                            return("新年宴會");
                        } else;
                        break;
                    case 8: // 1月8日
                    case 9: // 1月9日
                    case 10: // 1月10日
                    case 11: // 1月11日
                    case 12: // 1月12日
                    case 13: // 1月13日
                    case 14: // 1月14日
                        if (myWeekDay == 2) {
                            if (myYear >= 2000) {
                                return("成人の日");
                            } else;
                        } else;
                        break;
                    case 15: // 1月15日
                        if (myYear > 1948) {
                            if (myYear<2000) {
                                return("成人の日");
                            } else;
                        } else;
                        break;
                    case 16: // 1月16日
                        if (myWeekDay == 2) {
                            if (myYear > 1973) {
                                if (myYear<2000) {
                                    return("振替休日");
                                } else;
                            } else;
                        } else;
                        break;
                    case 30: // 1月30日
                        if (myYear <= 1912) {
                            return("孝明天皇祭");
                        } else;
                        break;
                    default:
                        break;
                }
                break;
            case 2: // 2月
                switch (myDate) {
                    case 11: // 2月11日
                        if (myYear <= 1948) {
                            return("紀元節");
                        } else {
                            if (myYear > 1966) {
                                return("建国記念の日");
                            } else;
                        }
                        break;
                    case 12: // 2月12日
                        if (myWeekDay == 2) {
                            if (myYear > 1973) {
                                return("振替休日");
                            } else;
                        } else;
                        break;
//                    case 23: // 2月23日 // 今上天皇崩御の時に使用
//                        if (myYear > 9999) { // 9999は崩御の年
//                            return("天皇誕生日");
//                        } else;
//                        break;
                    case 24: // 2月24日
                        if (myYear == 1989) {
                            return("昭和天皇の大喪の礼");
                        }
//                        else {
//                           if (myWeekDay == 2) { // 今上天皇崩御の時に使用
//                               if (myYear > 9999) { // 9999は崩御の年
//                                   return("振替休日");
//                               } else;
//                        }
                        else;
                        break;
                    default:
                    break;
                }
                break;
            case 3: // 3月
                switch (myDate) {
                    case 19: // 3月19日
                        if (myYear > 1878){ // 春分の計算
                            if (myYear < 1900){
                                myVernalEquinox = Math.floor(19.8277 + 0.242194 * (myYear - 1980) - Math.floor((myYear - 1980) / 4));
                            } else {
                                if (myYear < 1980){
                                    myVernalEquinox = Math.floor(20.8357 + 0.242194 * (myYear - 1980) - Math.floor((myYear - 1980) / 4));
                                } else {
                                    if (myYear < 2100){
                                        myVernalEquinox = Math.floor(20.8431 + 0.242194 * (myYear - 1980)- Math.floor((myYear - 1980) / 4));
                                    } else {
                                        if (myYear <= 2150){
                                            myVernalEquinox = Math.floor(21.8510 + 0.242194 * (myYear - 1980) - Math.floor((myYear - 1980) / 4));
                                        } else {
                                            myVernalEquinox = 99;
                                        }
                                    }
                                }
                            }
                        } else {
                            myVernalEquinox = 99;
                        }
                        if (myDate == myVernalEquinox) {
                            if (myYear > 1878) {
                                if (myYear <= 1948) {
                                    return("春季皇靈祭");
                                }
                                else {
                                    return("春分の日");
                                }
                            } else;
                        } else;
                        break;
                    case 20: // 3月20日
                    case 21: // 3月21日
                    case 22: // 3月22日
                        if (myYear > 1878) { // 春分の計算
                            if (myYear < 1900) {
                                myVernalEquinox = Math.floor(19.8277 + 0.242194 * (myYear - 1980) - Math.floor((myYear - 1980) / 4));
                            } else {
                                if (myYear < 1980) {
                                    myVernalEquinox = Math.floor(20.8357 + 0.242194 * (myYear - 1980) - Math.floor((myYear - 1980) / 4));
                                } else {
                                    if (myYear < 2100) {
                                        myVernalEquinox = Math.floor(20.8431 + 0.242194 * (myYear - 1980)- Math.floor((myYear - 1980) / 4));
                                    } else {
                                        if (myYear <= 2150) {
                                            myVernalEquinox = Math.floor(21.8510 + 0.242194 * (myYear - 1980) - Math.floor((myYear - 1980) / 4));
                                        } else {
                                            myVernalEquinox = 99;
                                        }
                                    }
                                }
                            }
                        } else {
                            myVernalEquinox = 99;
                        }
                        if (myDate == myVernalEquinox) {
                            if (myYear > 1878) {
                                if (myYear <= 1948) {
                                    return("春季皇靈祭");
                                } else {
                                    return("春分の日");
                                }
                            } else;
                        } else {
                            if (myDate == myVernalEquinox+1) {
                                if (myWeekDay == 2) {
                                    if (myYear > 1973) {
                                        return("振替休日");
                                    } else;
                                } else;
                            } else;
                        }
                        break;
                    default:
                        break;
                }
                break;
            case 4: // 4月
                switch (myDate) {
                    case 3: // 4月3日
                        if (myYear <= 1948) {
                            return("神武天皇祭");
                        } else;
                        break;
                    case 10: // 4月10日
                        if (myYear == 1959) {
                            return("皇太子明仁親王の結婚の儀");
                        } else;
                        break;
                    case 29: // 4月29日
                        if (myYear >= 1927) {
                            if (myYear <= 1948) {
                                return("天長節");
                            } else {
                                if (myYear < 1989) {
                                    return("天皇誕生日");
                                } else {
                                    if (myYear < 2007) {
                                        return("みどりの日");
                                    } else {
                                        return("昭和の日");
                                    }
                                }
                            }
                        } else;
                        break;
                    case 30: // 4月30日
                        if (myWeekDay == 2) {
                            if (myYear >= 1973) {
                                return("振替休日");
                            } else;
                        } else;
                        break;
                    default:
                        break;
                }
                break;
            case 5: // 5月
                switch (myDate) {
                    case 3: // 5月3日
                        if (myYear > 1948) {
                            return("憲法記念日");
                        } else;
                        break;
                    case 4: // 5月4日
                        if (myYear < 2007) {
                            switch (myWeekDay){
                                case 1: // 日曜日のときは「ただの日曜日」
                                    break;
                                case 2: // 憲法記念日の旧振替休日判定
                                    if (myYear >= 1973) {
                                        return("振替休日");
                                    } else;
                                    break;
                                default: // 旧国民の休日判定
                                    if (myYear > 1985) {
                                        return("国民の休日");
                                    } else;
                                    break;
                            }
                        } else {
                            return("みどりの日");
                        }
                        break;
                    case 5: // 5月5日
                        if (myYear > 1948){
                            return("こどもの日");
                        } else;
                        break;
                    case 6: // 5月6日
                        switch (myWeekDay){
                            case 2: // こどもの日の振替休日判定
                                if (myYear >= 1973) {
                                    return("振替休日");
                                } else;
                                break;
                            case 3: // みどりの日の新振替休日判定(憲法記念日の新振替休日(5月6日(水))とセット)
                            case 4: // 憲法記念日の新振替休日判定(みどりの日の新振替休日(5月6日(火))とセット)
                                if (myYear >= 2007) {
                                    return("振替休日");
                                } else;
                                break;
                            default:
                                break;
                        }
                        break;
                    default:
                        break;
                }
                break;
            case 6: // 6月
                switch (myDate) {
                    case 9: // 6月9日
                        if (myYear == 1993) {
                            return("皇太子徳仁親王の結婚の儀");
                        } else;
                        break;
//                    case 15: // 6月15日 // 6月にハッピーマンデーの祝日が制定された時に使用。
//                    case 16: // 6月16日
//                    case 17: // 6月17日
//                    case 18: // 6月18日
//                    case 19: // 6月19日
//                    case 20: // 6月20日
//                    case 21: // 6月21日
//                        if (myWeekDay == 2) {
//                            if (myYear >= 9999) { // 9999は6月に祝日が制定される年を表す
//                                return("??の日");
//                            } else;
//                        } else;
//                        break;
                    default:
                        break;
                }
                break;
            case 7: // 7月
                switch (myDate) {
                    case 15: // 7月15日
                    case 16: // 7月16日
                    case 17: // 7月17日
                    case 18: // 7月18日
                    case 19: // 7月19日
                        if (myWeekDay == 2) {
                            if (myYear >= 2003) {
                                return("海の日");
                            } else;
                        } else;
                        break;
                    case 20: // 7月20日
                        if (myYear >= 1996) {
                            if (myYear < 2003) {
                                return("海の日");
                            } else {
                                if (myWeekDay == 2) {
                                    return("海の日");
                                } else;
                            }
                        } else;
                        break;
                    case 21: // 7月21日
                        if (myWeekDay == 2) {
                            if (myYear >= 1996) {
                                if (myYear < 2003) {
                                    return("振替休日");
                                } else {
                                    return("海の日");
                                }
                            } else;
                        } else;
                        break;
                    case 30: // 7月30日
                        if (myYear > 1912) {
                            if (myYear < 1927) {
                                return("明治天皇祭");
                            } else;
                        } else;
                        break;
                    default:
                        break;
                }
                break;
            case 8: // 8月
                if (myDate == 31) {
                    if (myYear > 1912) {
                        if (myYear < 1927) {
                            return("天長節");
                        } else;
                    } else;
                } else;
                break;
            case 9: // 9月
                switch (myDate) {
                    case 15: // 9月15日
                        if (myYear >= 1966) {
                            if (myYear < 2003) {
                                return("敬老の日");
                            } else {
                                if (myWeekDay == 2) {
                                    return("敬老の日");
                                } else;
                            }
                        } else;
                        break;
                    case 16: // 9月16日
                        if (myWeekDay == 2) {
                            if (myYear >= 1973) {
                                if (myYear < 2003) {
                                    return("振替休日");
                                } else {
                                    return("敬老の日");
                                }
                            } else;
                        } else;
                        break;
                    case 17: // 9月17日
                        if (myYear < 1879) {
                            return("神嘗祭");
                        } else {
                            if (myYear >= 2003) {
                                if (myWeekDay == 2) {
                                    return("敬老の日");
                                } else;
                            } else;
                        }
                        break;
                    case 18: // 9月18日
                    case 19: // 9月19日
                    case 20: // 9月20日
                        if (myWeekDay == 2) {
                            if (myYear >= 2003) {
                                return("敬老の日");
                            } else;
                        } else;
                        break;
                    case 21: // 9月21日
                        if (myYear >= 2003) {
                            switch (myWeekDay) {
                                case 2: // 9月21日(月)
                                    return("敬老の日");
                                    break;
                                case 3: // 9月21日(火)
                                    if (myYear < 2100) { // 秋分の計算
                                        myAutumnalEquinox = Math.floor(23.2488 + 0.242194 * (myYear - 1980) - Math.floor((myYear - 1980) / 4));
                                    } else {
                                        if (myYear >= 2100 && myYear <= 2150) {
                                            myAutumnalEquinox = Math.floor(24.2488 + 0.242194 * (myYear - 1980) - Math.floor((myYear - 1980) / 4));
                                        } else {
                                            myAutumnalEquinox = 99;
                                        }
                                    }
                                    if (myDate == myAutumnalEquinox - 1) {
                                        return("国民の休日");
                                    } else;
                                    break;
                                default:
                                    break;
                            }
                        } else;
                        break;
                    case 22: // 9月22日
                        if (myYear >= 1878) { // 秋分の計算
                            if (myYear < 1900) {
                                myAutumnalEquinox = Math.floor(22.2588 + 0.242194 * (myYear - 1980) - Math.floor((myYear - 1980) / 4));
                            } else {
                                if (myYear < 1980) {
                                    myAutumnalEquinox = Math.floor(23.2588 + 0.242194 * (myYear - 1980) - Math.floor((myYear - 1980) / 4));
                                } else {
                                    if (myYear < 2100) {
                                        myAutumnalEquinox = Math.floor(23.2488 + 0.242194 * (myYear - 1980) - Math.floor((myYear - 1980) / 4));
                                    } else {
                                        if (myYear <= 2150 ) {
                                            myAutumnalEquinox = Math.floor(24.2488 + 0.242194 * (myYear - 1980) - Math.floor((myYear - 1980) / 4));
                                        } else {
                                            myAutumnalEquinox = 99;
                                        }
                                    }
                                }
                            }
                        } else {
                            myAutumnalEquinox = 99;
                        }
                        if (myDate == myAutumnalEquinox) {
                            if (myYear >= 1878) {
                                if (myYear < 1948) {
                                    return("秋季皇靈祭");
                                } else {
                                    return("秋分の日");
                                }
                            } else;
                        } else {
                            if (myWeekDay == 3) {
                                if (myYear >= 2003) {
                                    if (myDate == myAutumnalEquinox - 1) {
                                        return("国民の休日");
                                    } else;
                                } else;
                            } else;
                        }
                        break;
                    case 23: // 9月23日
                    case 24: // 9月24日
                        if (myYear >= 1878) { // 秋分の計算
                            if (myYear < 1900) {
                                myAutumnalEquinox = Math.floor(22.2588 + 0.242194 * (myYear - 1980) - Math.floor((myYear - 1980) / 4));
                            } else {
                                if (myYear < 1980) {
                                    myAutumnalEquinox = Math.floor(23.2588 + 0.242194 * (myYear - 1980) - Math.floor((myYear - 1980) / 4));
                                } else {
                                    if (myYear < 2100) {
                                        myAutumnalEquinox = Math.floor(23.2488 + 0.242194 * (myYear - 1980) - Math.floor((myYear - 1980) / 4));
                                    } else {
                                        if (myYear <= 2150) {
                                            myAutumnalEquinox = Math.floor(24.2488 + 0.242194 * (myYear - 1980) - Math.floor((myYear - 1980) / 4));
                                        } else {
                                            myAutumnalEquinox = 99;
                                        }
                                    }
                                }
                            }
                        } else {
                            myAutumnalEquinox = 99;
                        }
                        if (myDate == myAutumnalEquinox) {
                            if (myYear >= 1878) {
                                if (myYear < 1948) {
                                    return("秋季皇靈祭");
                                } else {
                                    return("秋分の日");
                                }
                            } else;
                        } else {
                            if (myDate == myAutumnalEquinox + 1) {
                                if (myWeekDay == 2) {
                                    if (myYear >= 1973) {
                                        return("振替休日");
                                    } else;
                                } else;
                            } else;
                        }
                        break;
                    default:
                        break;
                }
                break;
            case 10: // 10月
                switch (myDate) {
                    case 8: // 10月8日
                    case 9: // 10月9日
                    case 12: // 10月12日
                    case 13: // 10月13日
                    case 14: // 10月14日
                        if (myWeekDay == 2) {
                            if (myYear >= 2000) {
                                return("体育の日");
                            } else;
                        } else;
                        break;
                    case 10: // 10月10日
                        if (myYear >= 1966) {
                            if (myYear < 2000) {
                                return("体育の日");
                            } else {
                                if (myWeekDay == 2) {
                                    return("体育の日");
                                } else;
                            }
                        } else;
                        break;
                    case 11: // 10月11日
                        if (myWeekDay == 2) {
                            if (myYear >= 1973) {
                                if (myYear < 2000) {
                                    return("振替休日");
                               } else {
                                    return("体育の日");
                               }
                            } else;
                        } else;
                        break;
                    case 17: // 10月17日
                        if (myYear >= 1879) {
                            if (myYear < 1948) {
                                return("神嘗祭");
                            } else;
                        } else;
                        break;
                    case 31: // 10月31日
                        if (myYear >= 1913) {
                            if (myYear < 1927) {
                                return("天長節祝日");
                            } else;
                        } else;
                        break;
                    default:
                        break;
                }
                break;
            case 11: // 11月
                switch (myDate) {
                    case 3: // 11月3日
                        if (myYear < 1912) {
                            return("天長節");
                        } else {
                            if (myYear >= 1927) {
                                if (myYear < 1948) {
                                    return("明治節");
                                } else {
                                    return("文化の日");
                                }
                            } else;
                        }
                        break;
                    case 4: // 11月4日
                        if (myWeekDay == 2) {
                            if (myYear >= 1973) {
                                return("振替休日");
                            } else;
                        } else;
                        break;
                    case 10: // 11月10日
                        switch (myYear) {
                            case 1915:
                            case 1928:
                                return("即位ノ禮");
                                break;
                            default:
                                break;
                        }
                        break;
                    case 12: // 11月12日
                        switch (myYear) {
                            case 1990:
//                            case 9999: // 今上天皇崩御で即位礼正殿の儀が行われる場合に使用(9999は即位礼正殿の儀の年)
                                return("即位礼正殿の儀");
                                break;
                            default:
                                break;
                        }
                        break;
//                    case 13: // 11月13日
//                        if (myYear == 9995) { // 即位礼正殿の儀の11月12日が日曜日に当たったときに使用
//                            return("振替休日");
//                        } else;
//                        break;
                    case 14: // 11月14日
                        switch (myYear) {
                            case 1915:
                            case 1928:
                                return("大嘗祭");
                                break;
                            default:
                                break;
                        }
                        break;
                    case 16: // 11月16日
                        switch (myYear) {
                            case 1915:
                            case 1928:
                                return("即位禮及大嘗祭後大饗第一日");
                                break;
                            default:
                                break;
                        }
                        break;
                    case 23: // 11月23日
                        if (myYear < 1948) {
                            return("新嘗祭");
                        } else {
                            return("勤労感謝の日");
                        }
                        break;
                    case 24: // 11月24日
                        if (myWeekDay == 2) {
                            if (myYear >= 1973) {
                                return("振替休日");
                            } else;
                        } else;
                        break;
                    default:
                        break;
                }
                break;
            default: // 12月
                switch (myDate) {
                    case 23: // 12月23日
                        if (myYear >= 1989) {
//                            if (myYear < 9999) { // 今上天皇崩御の時に使用、9999は崩御の年
                                return("天皇誕生日");
//                            } else;
                        } else;
                        break;
                    case 24: // 12月24日
                        if (myWeekDay == 2) {
                            if (myYear >= 1989) {
//                                if (myYear < 9999) { // 今上天皇崩御の時に使用、9999は崩御の年
                                    return("振替休日");
//                                } else;
                            } else;
                        } else;
                        break;
                    case 25: // 12月25日
                        if (myYear >= 1927) {
                            if (myYear < 1948) {
                                return("大正天皇祭");
                            } else;
                        } else;
                        break;
                    default:
                        break;
                }
            break;
            }
    }
    return("");
}
// Copyright (C) 2005 Kaihen Taisaku Hombu (Program-Renewal Research Institute). All Rights Reserved.


戻る
Copyright © 2005 Kaihen Taisaku Hombu (Program-Renewal Research Institute). All Rights Reserved.