//  【以下のJavaScriptをカレンダーを表示したい部分に貼り付けます】

<script type="text/JavaScript">
// -------------------------- 各月カレンダー表示 ------------------------------
  WeekTd = new Array("日","月","火","水","木","金","土");                  // 表示曜日セット
  mmdd = new Array(31,28,31,30,31,30,31,31,30,31,30,31);                   // 毎月の日数セット
  dd = new Date();                                                         // 今日を読込む
  mm = new Date().getMonth();
  yy = new Date().getFullYear();

  tdfont  =" style=' padding:2px 0px 0px 2px; border:1px #6da solid; width:13px;background:#fff;'";         // セル内文字サイズ設定/位置調整
  tdwstyle=" padding:2px 0px 0px 2px; border:1px #6da solid; width:13px;background:#fff; color:#000; ";
  tdwstyle1=" style=' padding:2px 0px 0px 2px; border:1px #6da solid; width:13px;background:#fff;color:#d00;'"; // 日曜日の文字色設定
  tdwstyle2=" style=' padding:2px 0px 0px 2px; border:1px #6da solid; width:13px;background:#fff;'"; // 月〜金曜日の背景色設定
  tdwstyle3=" style=' padding:2px 0px 0px 2px; border:1px #6da solid; width:13px;color:#00d;'"; // 土曜日の文字色設定

  document.writeln("<div style='width:133px; margin:0 auto; text-align:center;'><section style='display:flex; justify-content:space-between; background:#9d9; font-size:14px; padding-top:2px; text-align:center; font-weight:bold;'><span style='cursor:cell;' onclick='ForeY()' title='前年を表示'>≪</span><span  style='cursor:pointer;' onclick='ForeM()' title='前月を表示'><</span><span ID='midasi' style='padding:2px 5px; background:#ce9; font-size:13px;'>2020/08</span><span style='cursor:pointer;' onclick='NextM()' title='次月を表示'>></span><span style='cursor:cell;' onclick='NextY()' title='次年を表示'>≫</span></section><div id='matrix2' style='font-size:8pt;'></div></div>");
  dbox();  

  // -------------------------日にちの表示-------------------------
  function dbox(){                                                       // 日にち月表の表示
    if ((!(yy%4) && yy%100) || !(yy%400)){mmdd[1] = 29;}else{mmdd[1] =28;} // 閏年処理
    dd.setDate(1);
    fWeek = dd.getDay()-1;                                                 // 初日の曜日の取得-1
    setday=0;                                                              // 表示日値の初期値セット
    Mm=(mm<9)?"0"+(mm+1):mm+1;                                             // 月表示2桁化
    MM=mm+1;                                                               // 実際の表示月
  
    if( document.all ){ document.all("midasi").innerText =yy+"/"+Mm;         // IE4等対応
    }else{ document.getElementById("midasi").innerHTML =yy+"/"+Mm;}         // 一般の場合の対応
    // カレンダー日にち月枠の表示
    txtLN = "      <table style='width:133px; border:1px #999 solid; border-collapse:collapse; text-align:center; font-weight:normal; font-size:12px;'><tr>";
    // 曜日行の表示
    txtLN += "          <td "+ tdwstyle1 +">"+WeekTd[0]+"</td>"; // 日曜日背景
    for(i=1;i<6;i++){
      txtLN += "          <td "+ tdwstyle2 +">"+WeekTd[i]+"</td>"; // 月〜金曜日
    }
    txtLN += "          <td "+ tdwstyle3 +">"+WeekTd[6]+"</td></tr><tr>"; // 土曜日背景

    m_day = mmdd[ mm ];                           //  各月の日数
    w_day = new Date(yy, mm, 1 ).getDay();        // 1日の曜日を取得
    
    for(i=1;i<= w_day;i++){                       // 1日の曜日の数だけ空白を表示
      txtLN += "          <td "+ tdfont +" > </td>";
    }

    // -------------------------日付月表の表示 -------------------------
    for(i=1;i<= m_day;i++){                       // 1日から月末日までの表示 
      w_day = new Date(yy, mm, i ).getDay();
      s_day = HolidCK(yy+"/"+MM+"/"+ i);          // 祝日の確認
      if( i==new Date().getDate() && yy==new Date().getFullYear() && mm==new Date().getMonth()){
        tdwstyle = ( !s_day )?'padding:2px 0px 0px 2px; border:1px #6da solid; width:13px; color:#222;background:#afa;' : 'padding:2px 0px 0px 2px; border:1px #6da solid; width:13px; color:#222;background:#afa; color:#d00;';        // 本日の背景色(・色)
        tdwtitle = ( !s_day )?" title = '本日'":" title = '" + s_day + "'";       // 本日のtitle表示設定
      }  else if( s_day ){
        tdwstyle += ' background:#fcf; color:#d00;'; // 祝日の背景色,色
        tdwtitle =" title = '" + s_day + "'";     // 祝日のtitle表示設定
      } else { tdwstyle = "padding:2px 0px 0px 2px; border:1px #6da solid; width:13px;background:#fff; color:#000;";   tdwtitle =""; }
      
      if( w_day == 6 ){                           // 土曜日の処理  
        tdwstyle += 'color:#00d;'
        txtLN += "          <td" + tdwtitle +" style ='"+ tdwstyle + "'>" + i + "</td>";
        txtLN += "</tr><tr>";
      } else if( w_day == 0 ){                     // 日曜日の処理
        tdwstyle += 'color:#d00;'
        txtLN += "          <td" + tdwtitle +"  style ='"+ tdwstyle + "'>" + i + "</td>";
      } else {                                    // 平日の処理
        tdwstyle += ''
        txtLN += "          <td" + tdwtitle +"  style ='"+ tdwstyle + "'>" + i + "</td>";
      }
    }
  
    w_day = new Date(yy, mm+1, 0 ).getDay();      // 最後の週の土曜日まで移動
    for(i=1;i< 7 - w_day;i++){                     
      txtLN += "          <td "+ tdfont +" > </td>";
    }
      txtLN += "  </tr></table>";
    
      document.getElementById("midasi").innerHTML =yy+"/"+Mm;  // 年月の表示
      document.getElementById("matrix2").innerHTML =txtLN;     // 当月表の表示
      
  };  // dbox() -----------------
  
  // 表示月の変更 ================================================
  function NextY(){                               //  次の年を表示
    yy++;
    dd.setFullYear(yy);
    dbox();
  };  // -----------------
  function NextM(){                              //  次の月を表示
    if(mm==11){yy++;mm=0;}else{mm++;}            // 年越し処置
    dd.setFullYear(yy); dd.setMonth(mm);
    document.getElementById("midasi").innerHTML =yy+"/"+Mm;
     dbox();
  };  // -----------------
  function ForeM(){                              //  前月を表示
    if(mm==0){yy--;mm=11;}else{mm--;}            // 越年処置
    dd.setFullYear(yy); dd.setMonth(mm);
    dbox();
  };  // -----------------
  function ForeY(){                              //  前年を表示
    yy--;
    dd.setFullYear(yy);
    dbox();
  };  // -----------------
  
  // ------------------------- 祝日のチェック --------------------------
  function HolidCK(ckDay) {                                                     // ckDay = yyyy/mm/dd
    Dsprit = ckDay.split("/");
    ya = Dsprit[0]-0; ma = Dsprit[1]-0; da = Dsprit[2]-0;                       // 文字→数字  変換
    switch (ma) {    // 1-12月毎に切替て条件設定します
      case 1:
        if (da==1){ ds = "元日";
        } else if ( da==1+1 && new Date(ya,1-1,1).getDay()==0) { ds = "振替休日";
        } else if ( ya>= 2000 && da == 14-new Date(ya,1-1,-1).getDay() ){ ds = "成人の日";
        } else if ( ya< 2000 && da == 15 ){ ds = "成人の日";
        } else { ds = "" }
      break;
      case 2:
        if (da==11){ ds = "建国記念の日";
        } else if ( da == 11+1 && new Date(ya,2-1,11).getDay() == 0 ){ ds = "振替休日";
        } else if ( ya>= 2020 && da == 23 ){ ds = "天皇誕生日";
        } else if ( ya>= 2020 && da == 23+1 && new Date(ya,2-1,23).getDay()==0 && ya>= 2020 ){ ds= "振替休日";
        } else { ds = "" }
      break;
      case 3:
        d3 = Math.floor(20.8431+0.242194*(ya-1980)-Math.floor((ya-1980)/4));    // 春分の日の計算
        if ( da == d3 ){ ds = "春分の日";
        } else if ( da == d3+1 && new Date(ya,3-1,d3).getDay() == 0 ){ ds = "振替休日";
        } else { ds = "" }
      break;
      case 4:
        if ( ya== 2019 ){ if ( da== 29 ){ ds = "昭和の日"
            } else if ( da== 30 ){ds = "休日" } else { ds = "" }
        } else if ( da == 29 ){ if ( ya >= 2007 ) {ds = "昭和の日" } else {ds = "みどりの日" }
        } else if ( da == 29+1 && new Date(ya,4-1,29).getDay() == 0 && ya >= 2007 ){ ds = "振替休日";
        } else { ds = "" }
      break;
      case 5:
        if( ya== 2019 && da== 1 ){ ds= "天皇の即位の日"
        } else if( ya== 2019 && da == 2 ){ ds= "休日"
        } else if ( da == 3 ){ ds = "憲法記念日" ;
        } else if ( da == 4 ) { if ( ya >= 2007 ) {ds = "みどりの日" } else {ds = "国民の休日" };
        } else if ( da == 5 ){ ds = "こどもの日";
        } else if ( da == 5+1 && new Date(ya,5-1,5).getDay() <= 2 && ya >= 2007 ) {ds = "振替休日" ;
        } else { ds = "" }
      break;
      case 6:
        ds = "";
      break;
      case 7:
        if( ya== 2020 ) { if( da== 23 ){ ds= "海の日"; 
            } else if( da== 24 ){ ds= "スポーツの日"; } else { ds = "" }
        } else if( ya== 2021 ) { if( da== 22 ){ ds= "海の日"; 
            } else if( da== 23 ){ ds= "スポーツの日"; } else { ds = "" }
        } else if ( ya>= 2003 && da == 21-new Date(ya,7-1,-1).getDay() ){ ds = "海の日" ;
        } else { ds = "" }
      break;
      case 8:
        if ( ya== 2020 ) { if ( da == 10 ){ ds = "山の日"; } else { ds = "" }
        } else if ( ya== 2021 ) { if ( da == 8 ){ ds = "山の日"; } else if ( da == 9 ){ ds = "振替休日"; } else { ds = "" }
        } else if ( da == 10+1 ){ if ( ya >= 2016 ) {ds = "山の日" } 
        } else if ( da == 11+1 && new Date(ya,8-1,11).getDay() == 0 && ya >= 2016 ){ ds = "振替休日";
        } else { ds = "" }
      break;
      case 9:  // 注 第3月曜日/敬老の日(15〜21) 秋分の日(22〜24)
        d99= 21-new Date(ya,9-1,-1).getDay();                                // 第3月曜日
        d9 = Math.floor(23.2488+0.242194*(ya-1980)-Math.floor((ya-1980)/4)); // 秋分の日の計算
        if ( ya>= 2003 && da == d99){ ds = "敬老の日" ;
        } else if ( ya< 2003 && da == 15 ){ ds = "敬老の日" ;
        } else if ( da == d9 ){ ds = "秋分の日" ;
        } else if ( da == d9+1 && new Date(ya,9-1,d9).getDay() == 0 && ya>= 2003 ){ ds = "振替休日";
        } else if ( da == d99+1 && d9 == d99+2 ){ ds = "休日";    // 敬老の日と秋分の日に挟まれた日
        } else { ds = "" }
      break;
      case 10:
        if ( ya== 2019 && da==22 ) { ds= "休日 即位礼正殿の儀";
        } else if ( ya== 2021 && da==11 ) { ds= "";
        } else if ( ya> 2020 && da== 14-new Date(ya,10-1,-1).getDay() ){ ds= "スポーツの日"; // 第2月曜日
        } else if( ya< 2020 && ya>= 2000 && da== 14-new Date(ya,10-1,-1).getDay() ){ ds= "体育の日";// 第2月曜日
        } else if( da == 10 && ya<2000 ){ ds = "体育の日" ;
        } else { ds = "" }
      break;
      case 11:
        if ( da == 3 ){ ds = "文化の日" ;
        } else if ( da == 3+1 && new Date(ya,11-1,3).getDay() == 0 ){ ds = "振替休日";
        } else if ( da == 23 ){ ds = "勤労感謝の日" ;
        } else if ( da == 23+1 && new Date(ya,11-1,23).getDay() == 0 ){ ds = "振替休日";
        } else { ds = "" }
      break;
      case 12:
        if ( ya< 2019 && ya>= 1989 && da == 23){ ds = "天皇誕生日" ;
        } else if ( ya< 2019 && ya>= 1989 && da == 23+1 && new Date(ya,12-1,23).getDay() == 0 ){ ds = "振替休日";
        } else { ds = "" }
      break;
    }
    return ds ;
  }; // HolidCK(ckDay) --------------------------
</script>