本日  昨日
 
11/21(Thu) 22:05

o カレンダー+セイハッピー・スペシャル
★「おしらせ」★
「祝日法」改正等に伴うカレンダー関連の変更については、こちらをご参照ください。


カレンダーをクリックするとセイハッピー・スペシャル( sayhappy_sp.cgi )を表示します。
それぞれの設置解説は、カレンダーおよびセイハッピー・スペシャルをご覧ください。

このスクリプトをご利用いただくためには、セイハッピー・スペシャル( sayhappy_sp.cgi )最新版(V2.0以降)が必要です。ダウンロードはこちらです。

  1. カレンダーの表示月数、1行に表示する月数を任意に設定できます。
  2. 年を表示したくない場合は、doc+=year + "年";を// doc+=year + "年";とコメント行にするか、この部分を削除します。
  3. テーブル背景色の変更---年月<TR bgcolor=#0000a0>、曜日<TR bgcolor=#f7ffa0>、日<TR bgcolor=#ddffdd>(2ヶ所あります)、本日<TR bgcolor=cyan>の色指定を変更します。あなたの好きな背景色に変更出来ます。

スクリプトのコピー&貼りつけ
下のスクリプトをコピーし、<HEAD>と</HEAD>のなかに貼りつけます。
<STYLE type="text/css"> <!-- A {text-decoration:none;} --> </STYLE> <script language="JavaScript"> <!-- //カレンダー+セイハッピー・スペシャル by「菊池さん」 <http://kikuchisan.net/> //sayhappy_sp.cgiのパス指定。あなたの環境にあわせて変更します dir = "../birthday/sayhappy_sp.cgi"; nDate = new Date(); thisDay = nDate.getDate(); thisMonth = nDate.getMonth(); function koyomi(mymonth) { var str = new Array(); str = mymonth.split("/"); myday = new Date(); myday.setDate(1); myday.setMonth(str[1]-1); myday.setYear(str[0]); monthDays = new Array(31,28,31,30,31,30,31,31,30,31,30,31); kyuDays = new Array("0101","0115","0211","0321","0429","0503","0504","0505" ,"0720","0915","0923","1010","1103","1123","1223"); //休日設定(変更出来ません) tokuDays = new Array("0518"); //特別日設定 year = myday.getYear(); if (year < 2000) year = year + 1900; month = myday.getMonth()+1; if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) { monthDays[1] = 29; } // うるう年計算 kyuDays[3] = "03" + Math.floor(20.8431 + 0.242194 * (year - 1980) - Math.floor((year - 1980)/4)); // 春分の日を求める(1980-2099まで) kyuDays[10] = "09" + Math.floor(23.2488 + 0.242194 * (year - 1980) - Math.floor((year - 1980)/4)); // 秋分の日を求める(1980-2099まで) nDays = monthDays[myday.getMonth()]; firstDay = myday; firstDay.setDate(1); startDay = firstDay.getDay(); // 2000年以降の成人の日/体育の日(第2月曜日)の計算 if (year >= 2000 &&(month == 1 || month == 10)) { if (startDay <= 1) happyMon = 7 + (2 - startDay); else happyMon = 14 - (startDay - 2); if (happyMon < 10) happyMon = "0" + happyMon; if (month == 1) kyuDays[1] = "01" + happyMon; else kyuDays[11] = "10" + happyMon; } // 2003年以降の海の日/敬老の日(第3月曜日)の計算 if (year >= 2003 && (month == 7 || month == 9)) { if (startDay <= 1) happyMon = 14 + (2 - startDay); else happyMon = 21 - (startDay - 2); if (happyMon < 10) happyMon = "0" + happyMon; if (month == 7) kyuDays[8] = "07" + happyMon; else kyuDays[9] = "09" + happyMon; } // 2007年以降は5/3,4のいずれかが日曜のときは5/6は振替休日 // (5/5が日曜のケースは「振替休日の自動計算」で計算) if (year >= 2007 && month == 5) { for (i = 3; i <= 4; i++) { zday = (year + parseInt(year/4) - parseInt(year/100) + parseInt(year/400) + parseInt((13*month + 8)/5) + i ) % 7; if (zday == 0) { kyuDays[kyuDays.length] = "0506"; } } } // 2007年以降は前後が祝日の場合の平日は国民の休日となる(敬老の日と秋分の日) // 2150年までは秋分の日が必ず水曜日になることから判定 if (year >= 2007 && month == 9) { hday = kyuDays[10].substring(2,4)*1; zday = (year + parseInt(year/4) - parseInt(year/100) + parseInt(year/400) + parseInt((13*month + 8)/5) + hday) % 7; if (zday == 3) { hday = hday - 1; kyuDays[kyuDays.length] = "09" + hday; } } // 2016年以降の山の日の設定、東京オリンピック年(2020年/2021年)は祝日移動で対処 if (year >= 2016 && year != 2020 && year != 2021 && month == 8) { kyuDays[kyuDays.length] = "0811"; } // 2019年天皇即位の日の設定(2019年限定) if (year == 2019 && (month == 4 || month == 5 || month == 10)) { kyuDays[kyuDays.length] = "0430"; kyuDays[kyuDays.length] = "0501"; //天皇即位の日 kyuDays[kyuDays.length] = "0502"; kyuDays[kyuDays.length] = "1022"; //即位礼正殿の儀 } // 2019年5月以降の天皇誕生日を12/23から2/23に変更 if ((year >= 2019 && month >= 5) || year >= 2020) { kyuDays[14] = "0223"; } // 2020年のみ東京オリンピックによる祝日移動(2020年限定) if (year == 2020) { kyuDays[8] = "0723"; //海の日(月曜から移動) kyuDays[11] = "0724"; //スポーツの日(10月から移動) kyuDays[kyuDays.length] = "0810"; //山の日(11日から移動) } // 2021年のみ東京オリンピック1年延期による祝日移動(2021年限定) if (year == 2021) { kyuDays[8] = "0722"; //海の日(月曜から移動) kyuDays[11] = "0723"; //スポーツの日(10月から移動) kyuDays[kyuDays.length] = "0808"; //山の日(11日から移動) } skip = 0; for (i = 0; i < kyuDays.length; i++) { // 振替休日の自動計算 hmon = kyuDays[i].substring(0,2); if (hmon == month) { hday = kyuDays[i].substring(2,4)*1; if (hmon <= 2) { zyear = year - 1; zmon = parseInt(hmon) + 12; } else { zyear = year; zmon = hmon; } zday = (zyear + parseInt(zyear/4) - parseInt(zyear/100) + parseInt(zyear/400) + parseInt((13*zmon + 8)/5) + hday ) % 7; if (zday == 0) { hday = hday + 1; if (hday < 10) { hday = "0" + hday;} for (i = 0; i < kyuDays.length; i++) { //振替休日が祝日の場合スキップ if (kyuDays[i] == (hmon + hday)) { skip = 1; } } if (skip == 0) { kyuDays[kyuDays.length] = hmon + hday; } } } } doc ="<CENTER><TABLE bgcolor=white border=0 bordercolor=white cellpadding=2>"; doc+="<TR bgcolor=#0000a0><TH COLSPAN=7><FONT color=white>"; doc+=year + "年 "; doc+=month + "月</FONT></TH></TR>"; doc+="<TR bgcolor=#f7ffa0><TD><FONT color=red>日</FONT></TD>"; doc+="<TD><FONT color=black>月</FONT></TD><TD><FONT color=black>火</FONT></TD>"; doc+="<TD><FONT color=black>水</FONT></TD><TD><FONT color=black>木</FONT></TD>"; doc+="<TD><FONT color=black>金</FONT></TD><TD><FONT color=blue>土</FONT></TD></TR>"; doc+="<TR bgcolor=#ddffdd>"; column = 0; for (i=0; i<startDay; i++) { doc+="<TD> </TD>"; column++; } for (i=1; i<=nDays; i++) { if (i==thisDay && myday.getMonth()==thisMonth) { //本日の背景色変更 doc+="<TD ALIGN=center bgcolor=cyan>"; } else { doc+="<TD ALIGN=center>"; } //セイハッピー・スペシャルのリンク設定 doc+="<a href='"+ dir +"?year="+ year +"&month="+ month +"&day="+ i +"'>"; weekDay = myday; weekDay.setDate(i); if (weekDay.getDay() == 0) doc+="<FONT COLOR=red>"; else if (weekDay.getDay() == 6) doc+="<FONT COLOR=blue>"; else doc+="<FONT COLOR=black>"; for (j=0; j<kyuDays.length; j++) //休日判定 { if (myday.getMonth()+1 == kyuDays[j].substring(0,2) && i == kyuDays[j].substring(2,4)*1) doc+="<FONT COLOR=red>"; } for (j=0; j<tokuDays.length; j++) //特別日判定 { if (myday.getMonth()+1 == tokuDays[j].substring(0,2) && i == tokuDays[j].substring(2,4)*1) doc+="<FONT COLOR=magenta>"; } doc+=i; doc+="</FONT></a></TD>" column++; if (column == 7 && i != nDays) { doc+="</TR><TR bgcolor=#ddffdd>"; column = 0; } } for (i=0; column<7; i++){ doc+="<TD> </TD>"; column++; } doc+="</TR></TABLE></CENTER>"; document.write(doc); } //--> </script>

カレンダーを表示したい場所に下の文を記述します。

表示内容と各パラメータの値を示します。参考にしてください。下のサンプルはNo.4の表示月数12ヶ月、1行に表示する月数4ヶ月です
No.表示内容mmtermnumc備考
1今月表示dt.getMonth()+111.
2前月から3ヶ月間の横1列表示dt.getMonth()33.
3前月から3ヶ月間の縦1列表示dt.getMonth()31.
4今月からの年間カレンダ(4×3行表示)dt.getMonth()+1124下のサンプル
5前々月からの半間カレンダ(3×2行表示)dt.getMonth()-163.
61月からの年間間カレンダ(4×3行表示)1124トップのカレンダー表示
<script language="JavaScript"> <!-- dt=new Date(); yy=dt.getYear(); if (yy < 2000) yy = yy + 1900; mm=dt.getMonth()+1; //表示開始月。前月はdt.getMonth()、翌月はdt.getMonth()+2 term=12; //何ヶ月分を表示するか。年間カレンダーの場合は12 numc=4; //1行に表示する月数。 document.write("<center><table bgcolor=white border=1 bordercolor=silver cellspacing=0>"); for (cnt = 0; cnt < term; cnt++) { if(cnt%numc == 0) document.write("<tr>"); document.write("<td valign=top>"); koyomi(yy+"/"+mm); document.write("</td>"); mm++; } document.write("</tr></table></center>"); //--> </script>


 
 
©1997- Kikuchisan's workshop All rights reserved //

スポンサーリンク

関連コンテンツ