要望いただいたので再質問します。
ここに機能追加をします。
・祝日が前後にあると真ん中を国民の休日にする。
(4/29と5/1と5/3が祝日なら4/30と5/2を国民の休日にする)
4月のカレンダーを書くのに5月1日をみて祝日だったら4/30を国民の休日に、
5月のカレンダーを書くのに4/30が祝日か見に行かなければならなくなる。
天皇誕生日、山の日、海の日、体育の日、スポーツの日の改定は今回は求めません。
Javascript
1<html> 2 3<head> 4 5<title></title> 6 7<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> 8<META http-equiv="Content-Style-Type" content="text/css"> 9 10<script language="JavaScript"> 11<!--- 12 13function cal(YYYY, MM){ 14 monthDay = new Array(31,28,31,30,31,30,31,31,30,31,30,31); 15// monthName = new Array("January","February","March","April","May","June","July","August","September","October","November","December"); 16 monthName = new Array("1-睦月","2-如月","3-弥生","4-卯月","5-皐月","6-水無月","7-文月","8-葉月","9-長月","10-神無月","11-霜月","12-師走"); 17 saijituNM = new Array("元日","成人の日:第2月曜日","建国記念の日","春分の日","昭和の日","憲法記念日","みどりの日","こどもの日","海の日:第3月曜日","敬老の日:第3月曜日","秋分の日","体育の日:第2月曜日","文化の日","勤労感謝の日","天皇誕生日","国民の休日","山の日","即位の礼","即位正殿の儀"); 18 syunbun = new Array(20,20,21,21,20,20,21,21,20,20,21,21,20,20,21,21,20,20,21,21,20,20,21,21,20,20,20,21,20,20,20); 19 syuubun = new Array(23,23,23,23,23,23,23,23,23,23,23,23,22,23,23,23,22,23,23,23,22,23,23,23,22,23,23,23,22,23,23); 20 21 sf = 0; snext = 0; 22 23 now = new Date(); 24 yyyy = now.getYear() + 1900; 25 mm = now.getMonth()+1; 26 dd = now.getDate(); 27 28 YYYY1 = Math.floor(YYYY / 4); 29 YYYY2 = Math.floor(YYYY / 100); 30 YYYY3 = Math.floor(YYYY / 400); 31 32 if (YYYY != YYYY1 * 4) monthDay[1] = 28; 33 else 34 if (YYYY != YYYY2 * 100) monthDay[1] = 29; 35 else 36 if (YYYY != YYYY3 * 400) monthDay[1] = 28; 37 else monthDay[1] = 29; 38 39 leftUP = - YYYY - YYYY1 + YYYY2 - YYYY3; 40 if (monthDay[1] == 29) leftUP = leftUP + 1; 41 42 for (i = 0; i < MM - 1; i++){ 43 leftUP = leftUP - monthDay[i]; 44 } 45 46 leftUP1 = Math.ceil(leftUP / 7); 47 leftUP = leftUP - leftUP1 * 7; 48 49 document.write('<table border=1 cellspacing=0 bordercolor=white>'); 50 51// document.write('<tr align=center><td colspan=7>' + YYYY + '年' + MM + '月' + '</td></tr>'); 52 53 document.write('<tr><td colspan=2 align=center>' + YYYY + '</td>'); 54 document.write('<td colspan=5 align=right>' + monthName[MM - 1] + '</td></tr>'); 55 56 document.write('<tr align=center><td><font color=red>日</font></td><td>月</td><td>火</td>'); 57 document.write('<td>水</td><td>木</td><td>金</td><td><font color=blue>土</font></td></tr>'); 58 59 for (y = 0; y < 6; y++){ 60 document.write('<tr align=center>'); 61 62 for (x = 0; x < 7; x++){ 63 DD = leftUP + y * 7 + x + 1; 64 sf = 0; 65 if (MM == 1 && DD == 1) sf = 1; 66 else if (MM == 1 && x == 1 && DD >= 8 && DD <= 14) sf = 2; 67 else if (MM == 2 && DD == 11) sf = 3; 68 else if (MM == 2 && DD == 23 && YYYY > 2019) sf = 15; 69 else if (MM == 3 && YYYY >= 2000 && YYYY <= 2030 70 && DD == syunbun[YYYY - 2000]) sf = 4; 71 else if (MM == 4 && DD == 29) sf = 5; 72 else if (MM == 4 && DD == 30 && YYYY == 2019) sf = 16; 73 else if (MM == 5 && DD == 1 && YYYY == 2019) sf = 18; 74 else if (MM == 5 && DD == 2 && YYYY == 2019) sf = 16; 75 else if (MM == 5 && DD == 3) sf = 6; 76 else if (MM == 5 && DD == 4) sf = 7; 77 else if (MM == 5 && DD == 5) sf = 8; 78 else if (MM == 7 && x == 1 && DD >= 15 && DD <= 21) sf = 9; 79 else if (MM == 8 && DD == 11 && YYYY > 2015) sf = 17; 80 else if (MM == 9 && x == 1 && DD >= 15 && DD <= 21) sf = 10; 81 else if (MM == 9 && x == 2 && DD >= 16 && DD <= 22 82 && YYYY >= 2000 && YYYY <= 2020 83 && DD == syuubun[YYYY - 2000] - 1) sf = 16; 84 else if (MM == 9 && YYYY >= 2000 && YYYY <= 2030 85 && DD == syuubun[YYYY - 2000]) sf = 11; 86 else if (MM == 10 && x == 1 && DD >= 8 && DD <= 14) sf = 12; 87 else if (MM == 10 && DD == 22 && YYYY == 2019) sf = 19; 88 else if (MM == 11 && DD == 3) sf = 13; 89 else if (MM == 11 && DD == 23) sf = 14; 90 else if (MM == 12 && DD == 23 && YYYY < 2019) sf = 15; 91 else if (snext == 1) { snext = 0; document.write('<td bgcolor=deeppink><a href="' + document.URL + '" title="振替休日">'); } 92 else document.write('<td>'); 93 94 if (sf >= 1) { 95 document.write('<td bgcolor=hotpink>'); 96 document.write('<a href="' + document.URL + '" title="' + saijituNM[sf - 1] + '">'); 97 } 98 99 if (yyyy == YYYY && mm == MM && dd == DD) document.write('<font color=green><b>'); 100 else if (x == 0) document.write('<font color=red>'); 101 else if (x == 6) document.write('<font color=blue>'); 102 103 if (DD >= 1 && DD <= monthDay[MM - 1]) document.write(DD); 104 else document.write('<br>'); 105 106 if (yyyy == YYYY && mm == MM && dd == DD) document.write('</b></font>'); 107 else if (x == 0) document.write('</font>'); 108 else if (x == 6) document.write('</font>'); 109 110 if (sf >= 1) document.write('</a>'); 111 112 if (sf >= 1 && x == 0) snext = 1; 113 if (sf == 16) snext = 0; 114 115 document.write('</td>'); 116 } 117 document.write('</tr>'); 118 } 119 document.write('</table>'); 120} 121 122//---> 123</script> 124 125</head> 126 127<body> 128<center> 129<script language="JavaScript"> 130<!--- 131 132 now = new Date(); 133 YYYY = now.getYear() + 1900; 134 135 MM = now.getMonth() + 1; 136 137// if(MM < 4) YYYY = YYYY - 1; 138// MM = 4; 139 140 YYYY = 2019; 141 MM = 1; 142 143// MM = 7; 144 145document.write('<table border=1 cellspacing=0 bordercolor=blue>'); 146document.write('<tr ><td valign="top">');cal(YYYY, MM);MM = MM + 1; if(MM > 12) { YYYY++; MM = 1; } 147document.write('</td><td valign="top">');cal(YYYY, MM);MM = MM + 1; if(MM > 12) { YYYY++; MM = 1; } 148document.write('</td><td valign="top">');cal(YYYY, MM);MM = MM + 1; if(MM > 12) { YYYY++; MM = 1; } 149document.write('</td><td valign="top">');cal(YYYY, MM);MM = MM + 1; if(MM > 12) { YYYY++; MM = 1; } 150document.write('</td><td valign="top">');cal(YYYY, MM);MM = MM + 1; if(MM > 12) { YYYY++; MM = 1; } 151document.write('</td><td valign="top">');cal(YYYY, MM);MM = MM + 1; if(MM > 12) { YYYY++; MM = 1; } 152document.write('</td></tr>'); 153document.write('<tr ><td valign="top">');cal(YYYY, MM);MM = MM + 1; if(MM > 12) { YYYY++; MM = 1; } 154document.write('</td><td valign="top">');cal(YYYY, MM);MM = MM + 1; if(MM > 12) { YYYY++; MM = 1; } 155document.write('</td><td valign="top">');cal(YYYY, MM);MM = MM + 1; if(MM > 12) { YYYY++; MM = 1; } 156document.write('</td><td valign="top">');cal(YYYY, MM);MM = MM + 1; if(MM > 12) { YYYY++; MM = 1; } 157document.write('</td><td valign="top">');cal(YYYY, MM);MM = MM + 1; if(MM > 12) { YYYY++; MM = 1; } 158document.write('</td><td valign="top">');cal(YYYY, MM);MM = MM + 1; if(MM > 12) { YYYY++; MM = 1; } 159document.write('</td></tr>'); 160document.write('<tr ><td valign="top">');cal(YYYY, MM);MM = MM + 1; if(MM > 12) { YYYY++; MM = 1; } 161document.write('</td><td valign="top">');cal(YYYY, MM);MM = MM + 1; if(MM > 12) { YYYY++; MM = 1; } 162document.write('</td><td valign="top">');cal(YYYY, MM);MM = MM + 1; if(MM > 12) { YYYY++; MM = 1; } 163document.write('</td><td valign="top">');cal(YYYY, MM);MM = MM + 1; if(MM > 12) { YYYY++; MM = 1; } 164document.write('</td><td valign="top">');cal(YYYY, MM);MM = MM + 1; if(MM > 12) { YYYY++; MM = 1; } 165document.write('</td><td valign="top">');cal(YYYY, MM);MM = MM + 1; if(MM > 12) { YYYY++; MM = 1; } 166document.write('</td></tr>'); 167document.write('<tr ><td valign="top">');cal(YYYY, MM);MM = MM + 1; if(MM > 12) { YYYY++; MM = 1; } 168document.write('</td><td valign="top">');cal(YYYY, MM);MM = MM + 1; if(MM > 12) { YYYY++; MM = 1; } 169document.write('</td><td valign="top">');cal(YYYY, MM);MM = MM + 1; if(MM > 12) { YYYY++; MM = 1; } 170document.write('</td><td valign="top">');cal(YYYY, MM);MM = MM + 1; if(MM > 12) { YYYY++; MM = 1; } 171document.write('</td><td valign="top">');cal(YYYY, MM);MM = MM + 1; if(MM > 12) { YYYY++; MM = 1; } 172document.write('</td><td valign="top">');cal(YYYY, MM);MM = MM + 1; if(MM > 12) { YYYY++; MM = 1; } 173document.write('</td></tr>'); 174document.write('</table>'); 175 176//---> 177</script> 178</center> 179</body></html>
>要望いただいたので
どこからですか?
回答者側ですか?
いずれにしても質問ではなく作業依頼になっています。
https://teratail.com/questions/226947
について回答者から
>今どのようなコードになっているのかによって異なるかと思います.
>出来るだけコードをご提示戴いた方が, 回答が付きやすいのではないでしょうか.
と頂いたもので。
その質問編集してコードつければ良いだけでは?
新たに質問をたてる必要はないと思います
それに経緯も背景もなにもないのにいきなり「要望いただいた」から始まってると邪推にしか繋がらないですよ。
ここは質問編集できるのですね。知りませんでした。
経緯を「要望いただいた」と表現したつもりですが、
意味がわからなかったらすみません。
質問がコロコロ変わったらわからなくならないですかね?
補足はともかく。
回答結構してて質問もしてきてて質問編集できることを知らないとは思わなかった…。
仰ってる前の回答も回答というより質問の追記修正依頼に近いです。
どこまでご自身の力でできたのですか?
現在の処理は1ヶ月単位に、それも1日から月末方向に進んでいて
振替休日は「次の日」というフラグを持ってやりましたが、
「前の日」を祝日にすることができない仕組みになっています。
ちょこっといじったらいいのか、全面的に書き直さなければならないのか
というところで止まっていて既出「3日間」案で進めてきましたが
ロジックが浮かばずに困っております。