利用者:Monaneko/NationalHolydayJP.js

お知らせ: 保存した後、ブラウザのキャッシュをクリアしてページを再読み込みする必要があります。

多くの WindowsLinux のブラウザ

  • Ctrl を押しながら F5 を押す。

Mac における Safari

  • Shift を押しながら、更新ボタン をクリックする。

Mac における ChromeFirefox

  • Cmd Shift を押しながら R を押す。

詳細についてはWikipedia:キャッシュを消すをご覧ください。

/*
NationalHolydayJP.js

日本の祝祭日(平成19年1月1日施行版)

プログラムのライセンスはPDとします。
*/

//春分日チェック
function chkShunbun(_year){
 var y = _year;
 var mncdd = new Date(2008,2,20,14,48);  //2008年3月20日14時48分
 var mncddt = mncdd.getTime();
 mncddt += 365.24219*(y-2008)*86400000;

 mncdd.setTime(mncddt);
 return mncdd.getDate();
}

//秋分日チェック
function chkShubun(_year){
 var y = _year;
 var mncdd = new Date(2007,8,23,18,51);
 var mncddt = mncdd.getTime();
 mncddt += 365.24219*(y-2007)*86400000; //2007年9月23日18時51分

 mncdd.setTime(mncddt);
 return mncdd.getDate();
}

//本体
function chkHolydayJP(_year,_month,_day){
 var year = _year; var month = _month; var day = _day;
 var dd   = new Date(year,month-1,day,0,0,0);

 //元日(1月1日)
 if(month == 1 && day == 1) return 1;
 if(month == 1 && day == 2 && dd.getDay() == 1) return 1001;

 //成人の日(1月第二月曜日)
 if(month == 1 && day >= 8 && day <= 14 && dd.getDay() == 1) return 2;

 //建国記念の日(2月11日)
 if(month == 2 && day == 11) return 3;
 if(month == 2 && day == 12 && dd.getDay() == 1) return 1003;

 //春分の日(春分日)
 if(month == 3 && day == chkShunbun(year)) return 4;
 if(month == 3 && day == chkShunbun(year)+1 && dd.getDay() == 1) return 1004;
 
 //昭和の日(4月29日)
 if(month == 4 && day == 29) return 5;
 if(month == 4 && day == 30 && dd.getDay() == 1) return 1005;

 //憲法記念日(5月3日)
 if(month == 5 && day == 3) return 6;

 //みどりの日(5月4日)
 if(month == 5 && day == 4) return 7;

 //こどもの日(5月5日)
 if(month == 5 && day == 5) return 8;
 if(month == 5 && day == 6 && dd.getDay() <= 3) return 1008;

 //海の日(7月第三月曜日)
 if(month == 7 && day >= 15 && day <= 21 && dd.getDay() == 1) return 9;

 //敬老の日(9月第三月曜日)
 if(month == 9 && day >= 15 && day <= 21 && dd.getDay() == 1) return 10;

 //秋分の日(秋分日)
 if(month == 9 && day == chkShubun(year)) return 11;
 if(month == 9 && day == chkShubun(year)+1 && dd.getDay() == 1) return 1011;

 //敬老の日と秋分の日の間の国民の休日
 if(month == 9 && day-1 >= 15 && day-1 <= 21 && dd.getDay() == 2 && 
    month == 9 && day+1 == chkShubun(year)) return 2011;

 //体育の日(10月第二月曜日)
 if(month == 10 && day >= 8 && day <= 14 && dd.getDay() == 1) return 12;
 
 //文化の日(11月3日)
 if(month == 11 && day == 3) return 13;
 if(month == 11 && day == 4 && dd.getDay() == 1) return 1013;

 //勤労感謝の日(11月23日)
 if(month == 11 && day == 23) return 14;
 if(month == 11 && day == 24 && dd.getDay() == 1) return 1014;

 //天皇誕生日(12月23日)
 if(month == 12 && day == 23) return 15;
 if(month == 12 && day == 24 && dd.getDay() == 1) return 1015;

 return 0;
}

$(function (){
var mncYear,mncMonth,mncDay;
if(!document.getElementById("crteventyear")) return;

mncYear  = document.getElementById("crteventyear").firstChild.nodeValue;
mncMonth = document.getElementById("crteventmonth").firstChild.nodeValue;
mncDay   = document.getElementById("crteventday").firstChild.nodeValue;

for(i=1;i<32;i++){
 var mncDayID = "crtevent"+i;
 var mncElem  = document.getElementById(mncDayID);
 if(mncElem)
  if(chkHolydayJP(mncYear,mncMonth,i) != 0)
   mncElem.style.color = "red";
}
});