戻る

解答例

JavaScript

<!DOCTYPE HTML>
<html lang="ja-JP">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>

</body>
<script type="text/javascript">
var d = new Date();

//今年
var year = d.getFullYear();
//今月
var month = d.getMonth()+1;

//今月の最後の日
var lastDate = (new Date(year + "/" + (month+1) + "/0")).getDate();

//今月の最初の日の曜日
var firstWDay = (new Date(year + "/" + month + "/1" )).getDay();

//今月の最後の日の曜日
var lastWDay = (new Date(year + "/" + (month+1) + "/0" )).getDay();

//出力
var table = "<table border=\"1\">\n";
table += "<tr>\n";
table += "<td>日</td><td>月</td><td>火</td><td>水</td><td>木</td><td>金</td><td>土</td>\n";
table += "</tr>\n";

for(var date = 1; date <= lastDate; date++){
	
	//その日の曜日を取得
	var wDay = (new Date(year + "/" + month + "/" + date)).getDay();
	//console.log(wDay);
	
	//日曜日か最初の1回目のループで<tr>
	if(wDay == 0 || date == 1){
		table += "<tr>\n";
		
		//最初の1回目のループで、最初の日の曜日まで空白で埋める
		if(firstWDay != 0 && data == 1){
			//最初の曜日(1以上)が日曜日(0)になるまでループ
			for(var i = firstWDay; i < 0; i--){
				table += "<td>&nbsp;</td>";
			}
		}
	}
	//日付の出力
	table += "<td>" + date + "</td>";
	
	//最後の週が土曜日で終わらなかったとき空白で埋める
	if(lastWDay != 6 && date == lastDate){
		//土曜日(6)から最後の曜日(6以下)になるまでループ
		for(var i = 6; i > lastWDay; i--){
			table += "<td>&nbsp;</td>";
		}
	}
	
	//土曜日のとき</tr>
	if(wDay == 6){
		table += "</tr>";
	}
}

table += "</tr>";
table += "</table>";

document.getElementsByTagName("body")[0].innerHTML = table;
</script>
</html>

PHP

<?php
header("Content-type: text/html; charset=utf-8");

//今日の日付
$year = date("Y");
$month = date("m");

//今月の最初の曜日
$first_wday = date("w",mktime(0,0,0,$month,1,$year));

//今月の最後の日(前月の0日)
$last_date = date("d", mktime(0,0,0,$month+1,0,$year));

//今月の最後の日の曜日
$last_wday = date("w", mktime(0,0,0,$month,$last_date,$year));

//日付の部分
$calendar = "";

for($date = 1; $date <= $last_date; $date++){
	
	//その日付の曜日取得
	$wday = date("w",mktime(0,0,0,$month,$date,$year));
	
	//日曜日か、最初の1回目のループに<tr>の開始
	if($wday == 0 || $date == 1){
		$calendar .= "<tr>";
		//最初の1回目のループで、最初の日の曜日まで空白で埋める
		if($first_wday != 0 && $date == 1){
			//最初の日の曜日を1ずつ減らして日曜日まで空白で埋める
			for($i = $first_wday; $i > 0; $i--){
				$calendar .= "<td>&nbsp;</td>";
			}
		}
	}
	$calendar .= "<td>{$date}</td>";

	
	//最後の週が土曜日で終わらなかったとき空白で埋める
	if($last_wday != 6 && $date == $last_date){
		for($i = 6; $i > $last_wday; $i--){
			$calendar .= "<td>&nbsp;</td>";
		}
	}
	
	//土曜日のとき</tr>の終了
	if($wday == 6){
		$calendar .= "</tr>";
	}

}
?>
<!DOCTYPE HTML>
<html lang="ja-JP">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<b><?=$year?>年<?=$month?>月</b>
<table border="1">
<tr>
	<td>日</td>
	<td>月</td>
	<td>火</td>
	<td>水</td>
	<td>木</td>
	<td>金</td>
	<td>土</td>
</tr>
<?=$calendar?>
</table>
</body>
</html>

inserted by FC2 system