これまで、カレンダーの表示は2010年〜2020年までとしていました。

今回、上記にプラスして2021年〜2030年のカレンダーを表示可能としました。

その際に、祝日データ(沢田内科医院の場合は休診日データ含む)を追加する必要があります。

祝日データは、沢田内科医院HPのカレンダーPHP(トップページ、診療時間ページ)とブタさんバルーン表示PHP(診療時間ページ)、Angel21-HPの簡易スケジュール(トップページ…表示用PHP、隠しページ…管理用PHP)・・・と、複数のファイル内に連想配列として記述していました。

PHPソース上では縦長にデータ記述が続き、ソースの判読性も悪化。

今回は、共有ファイル(CSV形式)として抜き出し、データの追加・修正は表計算ソフトで行えるように改善。



表計算ソフトには、LibreOffice Calc を使用しました。

右の画像は祝日データを追加登録した状態です。

今回も、以下のサイトを参考にさせて頂きました。

2030年12月カレンダー – 日めくりカレンダー.com

ありがとうございました。

休診日データが必要なのは、医院のカレンダーPHPのみなので、ごちゃまぜだったデータを、祝日データと休診日データに分離しました。

ブタさんバルーン表示PHPでの休診日データは、配列ではなく、ソースの中で記述しています。(日付が固定の為)


作成したデータを保存する際は、「ファイル」メニューから「名前を付けて保存」を選び、右下のファイル形式から「テキスト CSV(.csv)」を選び、ファイル名を入力し、左下の「フィルター設定を編集する」にチェックを入れて「保存」を押します。

祝日データは「holidays.csv」に、休診日データは「closedays.csv」と言うファイル名にしました。



「テキストファイルのエクスポート」画面が表示されます。

文字エンコーディングを、Webサーバーの使用文字に合わせ、「Unicode(UTF-8)」に変更します。

他は変える必要ありません。
(レコード終端は改行、フィールド区切りはカンマです。)

「OK」を押し、CSVファイルとして保存します。

一応、テキストエディタで開いて確認しときましょう。

作成したCSVファイルは以下のリンクからダウンロード可能です。

後は、PHPプログラムソースから、これまでの連想配列の記述を削除し、CSVファイルを取り込んで連想配列を生成させる為の記述を追加します。


■医院のカレンダーPHPの変更箇所(www.sawada-naikaiin.com)
 これまでの連想配列$holidays定義部分

    $holidays = array(
    "20091229" => "(休診)",
    "20091230" => "(休診)",
    "20091231" => "(休診)",
    "20100101" => "(休診)<br>元日",
    "20100102" => "(休診)",
    "20100103" => "(休診)",
    "20100111" => "成人の日",
    "20100211" => "建国記念の日",
    "20100321" => "春分の日",
    "20100322" => "振替休日",
       :
    (長いので省略)
       :
    "20201229" => "(休診)",
    "20201230" => "(休診)",
    "20201231" => "(休診)",
    "20210101" => "(休診)<br>元日",
    "20210102" => "(休診)",
    "20210103" => "(休診)"
    );
    



 今回の連想配列$holidays定義部分

    // ■2017/01/07追加・・・CSVファイルより、休診日の連想配列$closedaysを定義
    $filepath = "../../_shared/css/closedays.csv";
    $file = new SplFileObject($filepath); 
    $file->setFlags(SplFileObject::READ_CSV); 
    foreach ($file as $line) {
      if(!empty($line[0])){
        $closedays[$line[0]] = $line[1];
      }
    }
    
    // ■2017/01/07追加・・・CSVファイルより、祝日の連想配列$holidaysを定義
    $filepath = "../../_shared/css/holidays.csv";
    $file = new SplFileObject($filepath); 
    $file->setFlags(SplFileObject::READ_CSV); 
    foreach ($file as $line) {
      if(!empty($line[0])){
        $holidays[$line[0]] = $line[1];
      }
    } 
    
    // ■2017/01/07追加・・・休診日の連想配列と祝日の連想配列を結合
    $holidays = $closedays + $holidays;
    



■ブタさんバルーン表示PHPの変更箇所(www.sawada-naikaiin.com)

 これまでの連想配列holidays定義部分
 JavaScript部分で連想配列を定義しています。

    holidays = {
    "20161103":"文化の日",
    "20161123":"勤労感謝の日",
    "20161223":"天皇誕生日",
    "20170101":"元日",
    "20170102":"振替休日",
    "20170109":"成人の日",
    "20170211":"建国記念の日",
    "20170320":"春分の日",
    "20170429":"昭和の日",
       :
    (長いので省略)
       :
    "20200811":"山の日",
    "20200921":"敬老の日",
    "20200922":"秋分の日",
    "20201012":"体育の日",
    "20201103":"文化の日",
    "20201123":"勤労感謝の日",
    "20201223":"天皇誕生日"
    };
    



 今回の連想配列holidays定義部分
 echo文で配列データを生成しておりスマートな方法とは言えませんな・・・。

    // ■2017/01/07追加・・・CSVファイルを読み込み連想配列holidaysを定義
    holidays = {<?php
       $filepath = "../../_shared/css/holidays.csv";
       $file = new SplFileObject($filepath); 
       $file->setFlags(SplFileObject::READ_CSV); 
       foreach ($file as $line) {
          if (!empty($line[0])) { //フィールドデータのないレコードは除外
             if ($line[0] == '20100101') {
                echo "\"".$line[0]."\":\"".$line[1]."\"";  // 最初
             }else{
                echo ",\"".$line[0]."\":\"".$line[1]."\""; // 2つ目以降
             }
          }
       }
    ?>};
    

・・・8行目は、「if($line === reset($file)) {」とすれば良いと思ったのですが、なぜか機能しないので、最初のフィールドデータ(’20100101’)と比較して開始レコードを判断しました。・・・まだまだ理解できてません。



■簡易スケジュールPHPの変更箇所(www.a21-hp.com)

 これまでの連想配列$holidays定義部分

    if(empty($holidays)){
    	$holidays = array(
    		"20100101" => "元日",
    		"20100111" => "成人の日",
    		"20100211" => "建国記念の日",
    		"20100321" => "春分の日",
    		"20100322" => "振替休日",
    		"20100429" => "昭和の日",
    		"20100503" => "憲法記念日",
    		"20100504" => "みどりの日",
    		"20100505" => "こどもの日",
               :
            (長いので省略)
               :
    		"20200811" => "山の日",
    		"20200921" => "敬老の日",
    		"20200922" => "秋分の日",
    		"20201012" => "体育の日",
    		"20201103" => "文化の日",
    		"20201123" => "勤労感謝の日",
    		"20201223" => "天皇誕生日"
    	);
    }
    



 今回の連想配列$holidays定義部分

    if(empty($holidays)){
    // ■2017/01/07追加・・・CSVファイルより、祝日の連想配列$holidaysを定義
    	$filepath = "../../_shared/css/holidays.csv";
    	$file = new SplFileObject($filepath); 
    	$file->setFlags(SplFileObject::READ_CSV); 
    	foreach ($file as $line) {
    	  if(!empty($line[0])){
    	    $holidays[$line[0]] = $line[1];
    	  }
    	} 
    }
    



・・・なんとかローカル環境では、問題なく動くようになった。

・・・しかし、レンタルサーバ上ではどうかな・・・。

・・・サーバー性能不足で使い物にならないと言うオチでなければよいが・・・。



■インラインフレームに「医院のカレンダー」を表示してみました。

PHPプログラムソースはこちら

<?php
	session_cache_limiter('private_no_expire');
	session_start(); //ページの最初に呼び出す
?>
<!DOCTYPE html>
<html lang="ja">
<head>
	<title>カレンダー</title>
	<meta charset="UTF-8">
	<link rel="stylesheet" href="./calendar306.css">

<?php
date_default_timezone_set('Asia/Tokyo');	//2015.03.25 追加
$h_start_year = 2010;
$h_end_year = 2030;
$day_week_jp = array("日", "月", "火", "水","木","金","土","日");
$day_week_en = array("SUN", "MON", "TUE", "WED","THU","FRI","SAT","SUN");
$day_week_ens = array("sun", "mon", "tue", "wed","thu","fri","sat","sun");
$day_week = $day_week_jp;	// 曜日の表示形式を指定(上記のいずれかを指定)
$day_week_class = array("yobi y_red", "yobi y_blue", "yobi y_blue", "yobi y_green","yobi y_blue","yobi y_green","yobi y_green","yobi y_red");		// 背景色を指定(日,月,火・・・土,日)
$day_week_start = 1;		// 0:日曜始まり、1:月曜始まり


// ■2017/01/07追加・・・CSVファイルより、休診日の連想配列$closedaysを定義
$filepath = "./closedays.csv";
$file = new SplFileObject($filepath); 
$file->setFlags(SplFileObject::READ_CSV); 
foreach ($file as $line) {
  if(!empty($line[0])){
    $closedays[$line[0]] = $line[1];
  }
}

// ■2017/01/07追加・・・CSVファイルより、祝日の連想配列$holidaysを定義
$filepath = "./holidays.csv";
$file = new SplFileObject($filepath); 
$file->setFlags(SplFileObject::READ_CSV); 
foreach ($file as $line) {
  if(!empty($line[0])){
    $holidays[$line[0]] = $line[1];
  }
} 

// ■2017/01/07追加・・・休診日の連想配列と祝日の連想配列を結合
$holidays = $closedays + $holidays;


function calendar(){
	global $holidays;
	global $h_start_year;
	global $h_end_year;
	global $day_week;
	global $day_week_class;
	global $day_week_start;

	if(isset($_SESSION["nen"])){
	}else {
		$_SESSION["nen"] = date('Y');
	}
	if(isset($_SESSION["tuki"])){
	}else{
		$_SESSION["tuki"] = date('n');
	}

	$nowday = date('Ynj'); //今日の日付
	$nen = date('Y');
	$tuki = date('n');

	//今月の初めの曜日//
	$start_youbi = date("N", mktime(0, 0, 0,$tuki,1,$nen));
	///↑↑date('n')は1が月曜日 7が日曜日(PHP 5.1から)↑↑///
	$tuki_owari = date('t'); // その月の終りの日数

	/////////プルダウンリストから年を選んだ時の処理////////////
	if(isset($_POST['year'])){
		$_SESSION["nen"] = $_POST['year'];
		$start_youbi = date("N", mktime(0, 0, 0,$_SESSION["tuki"],1, $_SESSION["nen"]));
		$tuki_owari = date("t",mktime(0, 0, 0,$_SESSION["tuki"],1, $_SESSION["nen"]));
	}

	/////////プルダウンリストから月を選んだ時の処理////////////
	if(isset($_POST['month'])){
		$_SESSION["tuki"] = $_POST['month'];
		$start_youbi = date("N", mktime(0, 0, 0,$_SESSION["tuki"],1, $_SESSION["nen"]));
		$tuki_owari = date("t",mktime(0, 0, 0,$_SESSION["tuki"],1, $_SESSION["nen"]));
	}

	/////////ココから←先月の処理/////////////
	if(@$_POST['sengetu']){
		if($_SESSION["tuki"]==1){
			$_SESSION["nen"]=$_SESSION["nen"]-1;
			$_SESSION["tuki"] = 12; //1月だったら、年を1減らして12月にする
		}else{ //以下は 1月以外の処理
			$_SESSION["tuki"]=$_SESSION["tuki"]-1;
		}
		if($_SESSION["nen"]<=($h_start_year - 1)){	//祭日データの無い月は表示しない
			$_SESSION["nen"]=$_SESSION["nen"]+1;
			$_SESSION["tuki"]=1;
		}
		$start_youbi = date("N", mktime(0, 0, 0,$_SESSION["tuki"],1, $_SESSION["nen"]));
		$tuki_owari = date("t", mktime(0, 0, 0,$_SESSION["tuki"],1, $_SESSION["nen"]));
	}

	/////////ココから来月→の処理////////////
	if(@$_POST['raigetu']){
		if($_SESSION["tuki"]==12){
			$_SESSION["nen"]=$_SESSION["nen"]+1;
			$_SESSION["tuki"] = 1; //12月だったら1月にして年を1増やす
		}else{ //以下は12月以外の処理
			$_SESSION["tuki"]=$_SESSION["tuki"]+1;
		}
		if($_SESSION["nen"]>=($h_end_year + 1)){	//祭日データの無い月は表示しない
			$_SESSION["nen"]=$_SESSION["nen"]-1;
			$_SESSION["tuki"]=12;
		}
		$start_youbi = date("N", mktime(0, 0, 0,$_SESSION["tuki"],1, $_SESSION["nen"]));
		$tuki_owari = date("t", mktime(0, 0, 0,$_SESSION["tuki"],1, $_SESSION["nen"]));
	}

	/////////ココから今月→の処理////////////
	if(@$_POST['kongetu']){
		$_SESSION["nen"] = date('Y');
		$_SESSION["tuki"] = date('n');
		$start_youbi = date("N", mktime(0, 0, 0,$_SESSION["tuki"],1, $_SESSION["nen"]));
		$tuki_owari = date("t", mktime(0, 0, 0,$_SESSION["tuki"],1, $_SESSION["nen"]));
	}

//////////////フォーム部分///////////////////////

echo<<<EOT
<div class="calendar_box">
		<div style="text-align:center;">
		<div style="margin-left:auto; margin-right:auto;">

		<form action="" name="cal_form" method="post">

		<input type="hidden" name="nen" value="{$_SESSION["nen"]}">
		<input type="hidden" name="tuki" value="{$_SESSION["tuki"]}">

		<select class="year" name="year" onChange="submit()">
EOT;
		echo "\n";
		for ($i = $h_start_year; $i <= $h_end_year; $i++) {
			echo "			<option value='".$i."'";
			if ($i == $_SESSION["nen"]) echo " selected";
			$di = mb_convert_kana($i, 'A', 'utf8');
			echo ">".$di."年</option>\n";
		}

echo<<<EOT
		</select>
		<select class="month" name="month" onChange="submit()">
EOT;
		echo "\n";
		for ($i = 1; $i <= 12; $i++) {
			echo "			<option value='".$i."'";
			if ($i == $_SESSION["tuki"]) echo " selected";
			$di = mb_convert_kana($i, 'A', 'utf8');
			echo ">".$di."月</option>\n";
		}

echo<<<EOT
		</select>

		<table class="calendar" align="center">
			<tr>
EOT;

//////////曜日の表示//////////
echo "\n";
for($i=$day_week_start ; $i < $day_week_start + 7 ; $i++){
	echo '				<th class="'.$day_week_class[$i].'">'.$day_week[$i].'</th>';
	echo "\n";
}

echo<<<EOT
			</tr>
			<tr>
EOT;


$y = $_SESSION["nen"];
$m = $_SESSION["tuki"];
$zengetsu =0;
$kongetsu =0;
$yokugetsu =0;
$cnt = 1;
$orikaesi =0;
/////////先月の表示処理////////////
if(($day_week_start == 0)&&($start_youbi == 7)){$start_youbi = 0;};
// echo "start_youbi:".$start_youbi." day_week_start:".$day_week_start;	// Debug 表示用
if($start_youbi != $day_week_start){		//開始の曜日が同じでない場合は空セル発射!
	$zy = $y;
	$zm = $m - 1;
	if($zm == 0){
		$zm = 12;
		$zy = $zy - 1;
	}
	$zd = date("j",mktime(0,0,0,$m,0,$y)) - $start_youbi + $day_week_start + 1 ;
	for($i=$day_week_start + 1 ; $i<=$start_youbi ; $i++){
		if(($orikaesi == ($day_week_start * 6))or(isset($holidays[date("Ymd", mktime(0, 0, 0, $zm, $zd, $zy))]))){
			$td = "bkgd_red_other";//日曜日または祝日の色
			$td_txt = "txt_red";
		}elseif($day_week_class[$orikaesi + $day_week_start] == "yobi y_green"){
			$td = "bkgd_green_other";//土曜日の色
			$td_txt = "txt_green";
		}else{
			$td = "bkgd_blue_other";//平日の色
			$td_txt = "txt_blue";
		}
		$zengetsu_ymd = date("Ymd",mktime(0,0,0,$zm,$zd,$zy));
		echo "\n";
		echo '				<td><div class="bkgd_gray '.$td.'">';
		if(isset($holidays[$zengetsu_ymd])){
			echo '<div class="holiday_txt_red">'.$holidays[$zengetsu_ymd].'</div>';
		}
		echo '<div class="txt_other date_font">'.$zd.'</div>';
		echo '</div></td>';
		$zd++;
		$zengetsu++;
		$orikaesi++;
	}
}
/////////今月の表示処理////////////
while($cnt<=$tuki_owari){
	if($orikaesi ==7){ echo "\n			</tr>\n			<tr>"; //折り返し
		$orikaesi =0;//折り返しカウンタリセット
	}
	if(($orikaesi == ($day_week_start * 6))or(isset($holidays[date("Ymd", mktime(0, 0, 0, $m, $cnt, $y))]))){
		$td = "bkgd_red";//日曜日または祝日の色
		$td_txt = "txt_red";
	}elseif($day_week_class[$orikaesi + $day_week_start] == "yobi y_green"){
		$td = "bkgd_green";//土曜日の色
		$td_txt = "txt_green";
	}else{
		$td = "bkgd_blue";//平日の色
		$td_txt = "txt_blue";
	}
	if($nowday==$_SESSION["nen"].$_SESSION["tuki"].$cnt){
		$today_c = "bkgd_today"; //本日を示すの色
	}else{
		$today_c = ""; //本日以外の色
	}
	echo "\n";
	echo '				<td><div class="date_block '.$td.'">';
	if(isset($holidays[date("Ymd", mktime(0, 0, 0, $m, $cnt, $y))])){
		echo '<div class="holiday_txt_red">'.$holidays[date("Ymd",mktime(0,0,0,$m,$cnt,$y))].'</div>';
	}
	echo '<div class="'.$td_txt.' '.$today_c.' date_font">'.$cnt.'</div>';
	echo '</div></td>';
	$kongetsu++;
	$cnt++;
	$orikaesi++;
}
/////////来月の表示処理////////////
$zk_days = $zengetsu + $kongetsu;
$e = 42 - $zk_days;
$yy = $y;
$ym = $m + 1;
if($ym == 13){
	$ym = 1;
	$yy = $yy + 1;
}
$i = 0;
$yd = date("j",mktime(0,0,0,$m,$cnt,$y)) + $i;
while($i<$e){
	if($orikaesi ==7){ echo "\n			</tr>\n			<tr>"; //折り返し
		$orikaesi =0;//折り返しカウンタリセット
	}
	if(($orikaesi == ($day_week_start * 6))or(isset($holidays[date("Ymd", mktime(0, 0, 0, $ym, $yd, $yy))]))){
		$td = "bkgd_red_other";//日曜日または祝日の色
		$td_txt = "txt_red";
	}elseif($day_week_class[$orikaesi + $day_week_start] == "yobi y_green"){
		$td = "bkgd_green_other";//土曜日の色
		$td_txt = "txt_green";
	}else{
		$td = "bkgd_blue_other";//平日の色
		$td_txt = "txt_blue";
	}
	echo "\n";
	echo '				<td><div class="bkgd_gray '.$td.'">';
	if(isset($holidays[date("Ymd",mktime(0,0,0,$ym,$yd,$yy))])){
		echo '<div class="holiday_txt_red">'.$holidays[date("Ymd",mktime(0,0,0,$ym,$yd,$yy))].'</div>';
	}
	echo '<div class="txt_other date_font">'.$yd.'</div>';
	echo '</div></td>';
	$yd++;
	$yokugetsu++;
	$orikaesi++;
	$i++;
}
echo<<<EOT

			</tr>
			<tr>
				<td colspan="2" style="height:36px;">
					<input type="submit" class="sengetu" name="sengetu" value="<<">
				</td>
				<td colspan="3" style="height:36px;">
					<input type="submit" class="kongetu" name="kongetu" value="今月">
				</td>
				<td colspan="2" style="height:36px;">
					<input type="submit" class="raigetu" name="raigetu" value=">>">
				</td>
			</tr>
		</table>

		</form>

		</div>
		</div>
	</div>

EOT;
}

?>
</head>
<body onload="Init();">
	<?php
		calendar();
		$h = date("G");
		$m = date("i");
		$s = date("s");
	?>
	<script type="text/javascript">
		n_Flag = 0;
		timer = 1;
		function Init(){
			h = <?=$h?>;
			m = <?=$m?>;
			s = <?=$s?>;
			CheckTime();
		}
		function CheckTime(){
			if (s==60) { s=0;m++;}
			if (m==60) { m=0;h++;}
			if (h==24) { h=0; }
			n_Time=h+":"+m+":"+s;
			if (n_Time=="23:59:59") {
					n_Flag = 1;	 // 23時59分59秒にフラグを立てる
			}
			if (n_Time=="0:0:0") {
				if (n_Flag==1) {	// 重複クリック防止
					// 0時0分0秒ならカレンダーの「今月」ボタンをクリックする
					document.cal_form.kongetu.click();
					n_Flag = 0;
				}
			}
			s=s+1;
			clearTimeout(timer);
			timer=setTimeout("CheckTime()",1000);
		}
	</script>
</body>
</html>



CSSはこちら

@charset "utf-8";

body {
	margin: 0px;
	padding: 0px;
	font-family: 'ヒラギノ角ゴ Pro W3', 'Hiragino Kaku Gothic Pro', 'メイリオ', Meiryo, 'MS Pゴシック', sans-serif;
	line-height: 100%;
}

.entry-title {
	font-weight: 400;
	font-size: 22px;
}

.calendar_box {
	height:100%;
}

.top_ctrl {
	margin-left:auto;
	margin-right:auto;
	text-align:left;
}

.calendar{
	border: 0px #000000 solid;
}

.calendar th{
	border: 0px #000000 solid;
}

.calendar td{
	width: 60px;
	height: 52px;
	padding: 0px;
}

.date_font {
	font: 600 26px/1 Times New Roman;
}

.yobi {
	height: 18px;
	padding-top: 4px;
	border: 1px solid #ccc;
	font: 600 18px/1 'ヒラギノ角ゴ Pro W3', 'Hiragino Kaku Gothic Pro', 'メイリオ', Meiryo, 'MS Pゴシック', sans-serif;
}

.y_red {
	color: firebrick;
}

.y_blue {
	color: navy;
}

.y_green {
	color: darkgreen;
}

.date_block {
	position: relative;
	text-align:center;
	height:100%;
}

.bkgd_green {
	background: #a0dec0;
	border-radius: 5px;
	-moz-border-radius: 5px;
	-webkit-border-radius: 5px;
	box-shadow:1px 1px 3px;
	vertical-align: bottom;
}

.bkgd_green_other {
	background: #80bea0;
	vertical-align: bottom;
}

.txt_green {
	position: absolute;
	top: 24px;
	left: 0px;
	width: 100%;
	height: 28px;
	color: darkgreen;
	line-height: 28px;
	overflow: hidden;
}

.bkgd_red {
	background: #ffe0ed;
	border-radius: 5px;
	-moz-border-radius: 5px;
	-webkit-border-radius: 5px;
	box-shadow:1px 1px 3px;
	vertical-align: bottom;
}

.bkgd_red_other {
	background: pink;
	vertical-align: bottom;
}

.txt_red {
	position: absolute;
	top: 24px;
	left: 0px;
	width: 100%;
	height: 28px;
	color: crimson;
	line-height: 28px;
	overflow: hidden;
}

.bkgd_blue {
	background: #def;
	border-radius: 5px;
	-moz-border-radius: 5px;
	-webkit-border-radius: 5px;
	box-shadow:1px 1px 3px;
	vertical-align: bottom;
}

.bkgd_blue_other {
	background: #cde;
	vertical-align: bottom;
}

.txt_blue {
	position: absolute;
	top: 24px;
	left: 0px;
	width: 100%;
	height: 28px;
	color: navy;
	line-height: 28px;
	overflow: hidden;
}

.bkgd_gray {
	position: relative;
	height:100%;
	color: gray;
	text-align:center;
}

.txt_other {
	position: absolute;
	top: 24px;
	left: 0px;
	width: 100%;
	height: 28px;
}


.bkgd_today {
	height: 28px;
	width: 100%;
	background: gold;
	border-bottom-left-radius: 5px;
	-moz-border-radius-bottomleft: 5px;
	-webkit-border-bottom-left-radius: 5px;
	border-bottom-right-radius: 5px;
	-moz-border-radius-bottomright: 5px;
	-webkit-border-bottom-right-radius: 5px;
}

.txt_today {
	height: 28px;
	color: #000;
	line-height: 28px;
	overflow: hidden;
}

.holiday_txt_red {
	height: 2em;
	color: crimson;
	padding-top: 2px;
	margin: 0px;
  text-align:center;
	font: 400 12px/1 'ヒラギノ角ゴ Pro W3', 'Hiragino Kaku Gothic Pro', 'メイリオ', Meiryo, 'MS Pゴシック', sans-serif;
	overflow: hidden;
}

.year {
	padding-left: 10px;
	padding: 1px 10px;
	font: 400 18px/1 'ヒラギノ角ゴ Pro W3', 'Hiragino Kaku Gothic Pro', 'メイリオ', Meiryo, 'MS Pゴシック', sans-serif;
	cursor: pointer;
}

.month {
	padding-left: 10px;
	padding: 1px 10px;
	font: 400 18px/1 'ヒラギノ角ゴ Pro W3', 'Hiragino Kaku Gothic Pro', 'メイリオ', Meiryo, 'MS Pゴシック', sans-serif;
	cursor: pointer;
}

.sengetu {
	float: left;
	padding: 2px 20px;
	font-size: 1.2em;
	font-weight: bold;
	background-color: #248;
	color: #fff;
	border-style: none;
	box-shadow: 2px 2px 3px 1px #666;
		-moz-box-shadow: 2px 2px 3px 1px #666;
		-webkit-box-shadow: 2px 2px 3px 1px #666;
	text-shadow: 1px 1px 2px #000;
	background: -moz-linear-gradient(top,#B1D2E0 0%,#B1D2E0 3%,#0099CC 3%,#069);
	background: -webkit-gradient(linear, left top, left bottom, from(#B1D2E0), color-stop(0.03,#B1D2E0), color-stop(0.03,#0099CC), to(#069));
	border-radius: 5px;
		-moz-border-radius: 5px;
		-webkit-border-radius: 5px;
	cursor: pointer;
}
.sengetu:hover {
	opacity: 0.8;
}

.kongetu {
	padding: 2px 18px;
	font-size: 1.2em;
	font-weight: bold;
	background-color: #248;
	color: #fff;
	border-style: none;
	box-shadow: 2px 2px 3px 1px #666;
		-moz-box-shadow: 2px 2px 3px 1px #666;
		-webkit-box-shadow: 2px 2px 3px 1px #666;
	text-shadow: 1px 1px 2px #000;
	background: -moz-linear-gradient(top,#B1D2E0 0%,#B1D2E0 3%,#0099CC 3%,#069);
	background: -webkit-gradient(linear, left top, left bottom, from(#B1D2E0), color-stop(0.03,#B1D2E0), color-stop(0.03,#0099CC), to(#069));
	border-radius: 5px;
		-moz-border-radius: 5px;
		-webkit-border-radius: 5px;
	cursor: pointer;
}
.kongetu:hover {
	opacity: 0.8;
}

.raigetu {
	float: right;
	padding: 2px 20px;
	font-size: 1.2em;
	font-weight: bold;
	background-color: #248;
	color: #fff;
	border-style: none;
	box-shadow: 2px 2px 3px 1px #666;
		-moz-box-shadow: 2px 2px 3px 1px #666;
		-webkit-box-shadow: 2px 2px 3px 1px #666;
	text-shadow: 1px 1px 2px #000;
	background: -moz-linear-gradient(top,#B1D2E0 0%,#B1D2E0 3%,#0099CC 3%,#069);
	background: -webkit-gradient(linear, left top, left bottom, from(#B1D2E0), color-stop(0.03,#B1D2E0), color-stop(0.03,#0099CC), to(#069));
	border-radius: 5px;
		-moz-border-radius: 5px;
		-webkit-border-radius: 5px;
	cursor: pointer;
}
.raigetu:hover {
	opacity: 0.8;
}



holidays.csvはこちら

20100101,元日
20100111,成人の日
20100211,建国記念の日
20100321,春分の日
20100322,振替休日
20100429,昭和の日
20100503,憲法記念日
20100504,みどりの日
20100505,こどもの日
20100719,海の日
20100920,敬老の日
20100923,秋分の日
20101011,体育の日
20101103,文化の日
20101123,勤労感謝の日
20101223,天皇誕生日
20101224,振替休日
20110101,元日
20110110,成人の日
20110211,建国記念の日
20110321,春分の日
20110429,昭和の日
20110503,憲法記念日
20110504,みどりの日
20110505,こどもの日
20110718,海の日
20110919,敬老の日
20110923,秋分の日
20111010,体育の日
20111103,文化の日
20111123,勤労感謝の日
20111223,天皇誕生日
20120101,元日
20120102,振替休日
20120109,成人の日
20120211,建国記念の日
20120320,春分の日
20120429,昭和の日
20120430,振替休日
20120503,憲法記念日
20120504,みどりの日
20120505,こどもの日
20120716,海の日
20120917,敬老の日
20120922,秋分の日
20121008,体育の日
20121103,文化の日
20121123,勤労感謝の日
20121223,天皇誕生日
20121224,振替休日
20130101,元日
20130114,成人の日
20130211,建国記念の日
20130320,春分の日
20130429,昭和の日
20130503,憲法記念日
20130504,みどりの日
20130505,こどもの日
20130506,振替休日
20130715,海の日
20130916,敬老の日
20130923,秋分の日
20131014,体育の日
20131103,文化の日
20131104,振替休日
20131123,勤労感謝の日
20131223,天皇誕生日
20140101,元日
20140113,成人の日
20140211,建国記念の日
20140321,春分の日
20140429,昭和の日
20140503,憲法記念日
20140504,みどりの日
20140505,こどもの日
20140506,振替休日
20140721,海の日
20140915,敬老の日
20140923,秋分の日
20141013,体育の日
20141103,文化の日
20141123,勤労感謝の日
20141124,振替休日
20141223,天皇誕生日
20150101,元日
20150112,成人の日
20150211,建国記念の日
20150321,春分の日
20150429,昭和の日
20150503,憲法記念日
20150504,みどりの日
20150505,こどもの日
20150506,振替休日
20150720,海の日
20150921,敬老の日
20150922,国民の休日
20150923,秋分の日
20151012,体育の日
20151103,文化の日
20151123,勤労感謝の日
20151223,天皇誕生日
20160101,元日
20160111,成人の日
20160211,建国記念の日
20160320,春分の日
20160321,振替休日
20160429,昭和の日
20160503,憲法記念日
20160504,みどりの日
20160505,こどもの日
20160718,海の日
20160811,山の日
20160919,敬老の日
20160922,秋分の日
20161010,体育の日
20161103,文化の日
20161123,勤労感謝の日
20161223,天皇誕生日
20170101,元日
20170102,振替休日
20170109,成人の日
20170211,建国記念の日
20170320,春分の日
20170429,昭和の日
20170503,憲法記念日
20170504,みどりの日
20170505,こどもの日
20170717,海の日
20170811,山の日
20170918,敬老の日
20170923,秋分の日
20171009,体育の日
20171103,文化の日
20171123,勤労感謝の日
20171223,天皇誕生日
20180101,元日
20180108,成人の日
20180211,建国記念の日
20180212,振替休日
20180321,春分の日
20180429,昭和の日
20180430,振替休日
20180503,憲法記念日
20180504,みどりの日
20180505,こどもの日
20180716,海の日
20180811,山の日
20180917,敬老の日
20180923,秋分の日
20180924,振替休日
20181008,体育の日
20181103,文化の日
20181123,勤労感謝の日
20181223,天皇誕生日
20181224,振替休日
20190101,元日
20190114,成人の日
20190211,建国記念の日
20190321,春分の日
20190429,昭和の日
20190503,憲法記念日
20190504,みどりの日
20190505,こどもの日
20190506,振替休日
20190715,海の日
20190811,山の日
20190812,振替休日
20190916,敬老の日
20190923,秋分の日
20191014,体育の日
20191103,文化の日
20191104,振替休日
20191123,勤労感謝の日
20191223,天皇誕生日
20200101,元日
20200113,成人の日
20200211,建国記念の日
20200320,春分の日
20200429,昭和の日
20200503,憲法記念日
20200504,みどりの日
20200505,こどもの日
20200506,振替休日
20200720,海の日
20200811,山の日
20200921,敬老の日
20200922,秋分の日
20201012,体育の日
20201103,文化の日
20201123,勤労感謝の日
20201223,天皇誕生日
20210101,元日
20210111,成人の日
20210211,建国記念の日
20210320,春分の日
20210429,昭和の日
20210503,憲法記念日
20210504,みどりの日
20210505,こどもの日
20210719,海の日
20210811,山の日
20210920,敬老の日
20210923,秋分の日
20211011,体育の日
20211103,文化の日
20211123,勤労感謝の日
20211223,天皇誕生日
20220101,元日
20220110,成人の日
20220211,建国記念の日
20220321,春分の日
20220429,昭和の日
20220503,憲法記念日
20220504,みどりの日
20220505,こどもの日
20220718,海の日
20220811,山の日
20220919,敬老の日
20220923,秋分の日
20221010,体育の日
20221103,文化の日
20221123,勤労感謝の日
20221223,天皇誕生日
20230101,元日
20230102,振替休日
20230109,成人の日
20230211,建国記念の日
20230321,春分の日
20230429,昭和の日
20230503,憲法記念日
20230504,みどりの日
20230505,こどもの日
20230717,海の日
20230811,山の日
20230918,敬老の日
20230923,秋分の日
20231009,体育の日
20231103,文化の日
20231123,勤労感謝の日
20231223,天皇誕生日
20240101,元日
20240108,成人の日
20240211,建国記念の日
20240212,振替休日
20240320,春分の日
20240429,昭和の日
20240503,憲法記念日
20240504,みどりの日
20240505,こどもの日
20240506,振替休日
20240715,海の日
20240811,山の日
20240812,振替休日
20240916,敬老の日
20240922,秋分の日
20240923,振替休日
20241014,体育の日
20241103,文化の日
20241104,振替休日
20241123,勤労感謝の日
20241223,天皇誕生日
20250101,元日
20250113,成人の日
20250211,建国記念の日
20250320,春分の日
20250429,昭和の日
20250503,憲法記念日
20250504,みどりの日
20250505,こどもの日
20250506,振替休日
20250721,海の日
20250811,山の日
20250915,敬老の日
20250923,秋分の日
20251013,体育の日
20251103,文化の日
20251123,勤労感謝の日
20251124,振替休日
20251223,天皇誕生日
20260101,元日
20260112,成人の日
20260211,建国記念の日
20260320,春分の日
20260429,昭和の日
20260503,憲法記念日
20260504,みどりの日
20260505,こどもの日
20260506,振替休日
20260720,海の日
20260811,山の日
20260921,敬老の日
20260922,国民の休日
20260923,秋分の日
20261012,体育の日
20261103,文化の日
20261123,勤労感謝の日
20261223,天皇誕生日
20270101,元日
20270111,成人の日
20270211,建国記念の日
20270321,春分の日
20270322,振替休日
20270429,昭和の日
20270503,憲法記念日
20270504,みどりの日
20270505,こどもの日
20270719,海の日
20270811,山の日
20270920,敬老の日
20270923,秋分の日
20271011,体育の日
20271103,文化の日
20271123,勤労感謝の日
20271223,天皇誕生日
20280101,元日
20280110,成人の日
20280211,建国記念の日
20280320,春分の日
20280429,昭和の日
20280503,憲法記念日
20280504,みどりの日
20280505,こどもの日
20280717,海の日
20280811,山の日
20280918,敬老の日
20280922,秋分の日
20281009,体育の日
20281103,文化の日
20281123,勤労感謝の日
20281223,天皇誕生日
20290101,元日
20290108,成人の日
20290211,建国記念の日
20290212,振替休日
20290320,春分の日
20290429,昭和の日
20290430,振替休日
20290503,憲法記念日
20290504,みどりの日
20290505,こどもの日
20290716,海の日
20290811,山の日
20290917,敬老の日
20290923,秋分の日
20290924,振替休日
20291008,体育の日
20291103,文化の日
20291123,勤労感謝の日
20291223,天皇誕生日
20291224,振替休日
20300101,元日
20300114,成人の日
20300211,建国記念の日
20300320,春分の日
20300429,昭和の日
20300503,憲法記念日
20300504,みどりの日
20300505,こどもの日
20300506,振替休日
20300715,海の日
20300811,山の日
20300812,振替休日
20300916,敬老の日
20300923,秋分の日
20301014,体育の日
20301103,文化の日
20301104,振替休日
20301123,勤労感謝の日
20301223,天皇誕生日
20310101,元日



closedays.csvはこちら

20091229,(休診)
20091230,(休診)
20091231,(休診)
20100101,(休診)<br>元日
20100102,(休診)
20100103,(休診)
20100813,(休診)
20100814,(休診)
20100815,(休診)
20100816,(休診)
20101229,(休診)
20101230,(休診)
20101231,(休診)
20110101,(休診)<br>元日
20110102,(休診)
20110103,(休診)
20110813,(休診)
20110814,(休診)
20110815,(休診)
20110816,(休診)
20111229,(休診)
20111230,(休診)
20111231,(休診)
20120101,(休診)<br>元日
20120102,(休診)<br>振替休日
20120103,(休診)
20120813,(休診)
20120814,(休診)
20120815,(休診)
20120816,(休診)
20121229,(休診)
20121230,(休診)
20121231,(休診)
20130101,(休診)<br>元日
20130102,(休診)
20130103,(休診)
20130813,(休診)
20130814,(休診)
20130815,(休診)
20130816,(休診)
20131229,(休診)
20131230,(休診)
20131231,(休診)
20140101,(休診)<br>元日
20140102,(休診)
20140103,(休診)
20140813,(休診)
20140814,(休診)
20140815,(休診)
20140816,(休診)
20141229,(休診)
20141230,(休診)
20141231,(休診)
20150101,(休診)<br>元日
20150102,(休診)
20150103,(休診)
20150813,(休診)
20150814,(休診)
20150815,(休診)
20150816,(休診)
20151229,(休診)
20151230,(休診)
20151231,(休診)
20160101,(休診)<br>元日
20160102,(休診)
20160103,(休診)
20160813,(休診)
20160814,(休診)
20160815,(休診)
20160816,(休診)
20161229,(休診)
20161230,(休診)
20161231,(休診)
20170101,(休診)<br>元日
20170102,(休診)<br>振替休日
20170103,(休診)
20170813,(休診)
20170814,(休診)
20170815,(休診)
20170816,(休診)
20171229,(休診)
20171230,(休診)
20171231,(休診)
20180101,(休診)<br>元日
20180102,(休診)
20180103,(休診)
20180813,(休診)
20180814,(休診)
20180815,(休診)
20180816,(休診)
20181229,(休診)
20181230,(休診)
20181231,(休診)
20190101,(休診)<br>元日
20190102,(休診)
20190103,(休診)
20190813,(休診)
20190814,(休診)
20190815,(休診)
20190816,(休診)
20191229,(休診)
20191230,(休診)
20191231,(休診)
20200101,(休診)<br>元日
20200102,(休診)
20200103,(休診)
20200813,(休診)
20200814,(休診)
20200815,(休診)
20200816,(休診)
20201229,(休診)
20201230,(休診)
20201231,(休診)
20210101,(休診)<br>元日
20210102,(休診)
20210103,(休診)
20210813,(休診)
20210814,(休診)
20210815,(休診)
20210816,(休診)
20211229,(休診)
20211230,(休診)
20211231,(休診)
20220101,(休診)<br>元日
20220102,(休診)
20220103,(休診)
20220813,(休診)
20220814,(休診)
20220815,(休診)
20220816,(休診)
20221229,(休診)
20221230,(休診)
20221231,(休診)
20230101,(休診)<br>元日
20230102,(休診)<br>振替休日
20230103,(休診)
20230813,(休診)
20230814,(休診)
20230815,(休診)
20230816,(休診)
20231229,(休診)
20231230,(休診)
20231231,(休診)
20240101,(休診)<br>元日
20240102,(休診)
20240103,(休診)
20240813,(休診)
20240814,(休診)
20240815,(休診)
20240816,(休診)
20241229,(休診)
20241230,(休診)
20241231,(休診)
20250101,(休診)<br>元日
20250102,(休診)
20250103,(休診)
20250813,(休診)
20250814,(休診)
20250815,(休診)
20250816,(休診)
20251229,(休診)
20251230,(休診)
20251231,(休診)
20260101,(休診)<br>元日
20260102,(休診)
20260103,(休診)
20260813,(休診)
20260814,(休診)
20260815,(休診)
20260816,(休診)
20261229,(休診)
20261230,(休診)
20261231,(休診)
20270101,(休診)<br>元日
20270102,(休診)
20270103,(休診)
20270813,(休診)
20270814,(休診)
20270815,(休診)
20270816,(休診)
20271229,(休診)
20271230,(休診)
20271231,(休診)
20280101,(休診)<br>元日
20280102,(休診)
20280103,(休診)
20280813,(休診)
20280814,(休診)
20280815,(休診)
20280816,(休診)
20281229,(休診)
20281230,(休診)
20281231,(休診)
20290101,(休診)<br>元日
20290102,(休診)
20290103,(休診)
20290813,(休診)
20290814,(休診)
20290815,(休診)
20290816,(休診)
20291229,(休診)
20291230,(休診)
20291231,(休診)
20300101,(休診)<br>元日
20300102,(休診)
20300103,(休診)
20300813,(休診)
20300814,(休診)
20300815,(休診)
20300816,(休診)
20301229,(休診)
20301230,(休診)
20301231,(休診)
20310101,(休診)<br>元日
20310102,(休診)
20310103,(休診)