本日  昨日
 
04/26(Wed) 20:47

o カレンダー+セイハッピー・スペシャル
(16.12.28)2016(平成28)年施行の「祝日法」の改正、8/11「山の日」に対応しました。
(08.04.23)2007(平成19)年施行の「祝日法」の改正で抜けていた、(1)国民の祝日が日曜日と重なる場合その直後の「国民の祝日でない日」を振替休日とする(5/3や5/4が日曜日と重なった場合には5/6が振替休日)、(2)国民の祝日に挟まれた平日を国民の休日とする(敬老の日と秋分の日)、に対応しました。
(07.04.29)2007(平成19)年施行の「祝日法」の改正、4/29「みどりの日」→「昭和の日」、5/4「国民の祝日」→「みどりの日」に対応しました。
(04.02.21)「敬老の日」が2003(平成15)年から9月第3月曜日になる「祝日法」の改正に未対応だったのを対応するように修正。
(03.05.03)「海の日」が2003(平成15)年から7月第3月曜日になる「祝日法」の改正に対応。また振替休日が祝日の場合に振替休日を表示してしまうバグを修正しました

カレンダーをクリックするとセイハッピー・スペシャル( 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年以降の山の日の設定 if (year >= 2016 && month == 8) { kyuDays[kyuDays.length] = "0811"; } 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 //

関連コンテンツ