今月のカレンダーを表示
- <!DOCTYPE html>
- <html lang="ja">
- <head>
- <meta charset="UTF-8">
- <title>今月のカレンダーを表示</title>
- <style type="text/css">
- td, th
- {
- border:1px solid #ccc;
- }
- .today
- {
- font-weight:bold;
- }
- </style>
- <body>
- <h1>今月のカレンダーを表示</h1>
- <script type="text/javascript">
- /**
- * 年月日に指定された数値を足して返す
- * ymdDate:日付データ
- * 追加する項目:年月日のどれか(ymd)
- * 追加する数値
- */
- function addDate(ymdDate, target, add)
- {
- addNum = parseFloat(add);
-
- yea = ymdDate.getFullYear();
- mon = ymdDate.getMonth();
- day = ymdDate.getDate();
-
- if(target == "y")
- {
- yea += addNum;
- }
- else if(target == "m")
- {
- mon += addNum;
- }
- else if(target == "d")
- {
- day += addNum;
- }
- return new Date(yea, mon, day);
- }
- /**
- * カレンダー用に日曜から1日、月末から土曜までを何かで埋め、配列にして返す
- * year 表示するカレンダーの年
- * month 表示するカレンダーの月
- * Fill 日曜から1日まで、月末から土曜まで埋める文字
- */
- function convertDayOfCalendar(year, month, Fill)
- {
- // 月初と月末
- var startMonth = new Date(year + "/" + month + "/1");
- var endMonth = addDate(new Date(year, month, 1), "d", -1);
-
- // カレンダー用に日にちを配列化:
- DayArray = new Array();
-
- // 日曜~1日の空白を埋める。
- for (i=0; i<startMonth.getDay(); i++)
- {
- DayArray.push(Fill);
- }
-
- // 月初め(1日)~月末までを埋める
- for (i=0; i<endMonth.getDate(); i++)
- {
- DayArray.push(i+1);
- }
-
- // 月末~土曜の空白を埋める
- if (endMonth.getDay() != 6)
- {
- startWeek = parseFloat(endMonth.getDay()) + 1;
- for (i=startWeek; i<7; i++)
- {
- DayArray.push(Fill);
- }
- }
- return DayArray;
- }
- function cal(year, month, day)
- {
- // 年月日の指定が無ければ、今月のカレンダー
- today=new Date();
- var year = year || today.getFullYear();
- var month = month || today.getMonth() + 1;
- var day = day || today.getDate();
-
- // 曜日配列
- week = new Array("日", "月", "火", "水", "木", "金", "土");
-
- // カレンダー用に日を配列化(日曜から1日までを何かで埋める)
- DayArray = convertDayOfCalendar(year, month, "-");
-
- // 年月
- when = year + "/" + month;
-
- var calendar = "";
- calendar += '<table>';
- calendar += "<caption>" + when + '</caption>';
-
- // 曜日
- calendar += "<tr>";
- for (i=0; i<7; i++)
- {
- calendar += '<th>' + week[i] + '</th>';
- }
- calendar += "</tr>";
-
- // (週単位で)日にち
- for (j=0; j<DayArray.length; j++)
- {
- if (j%7 == 7)
- {
- calendar += '<tr>';
- }
- else if (j%7 == 0)
- {
- calendar += '</tr>';
- }
-
- // 「今日」の場合はclassを追加。
- todayClass = "";
- if (day == DayArray[j])
- {
- todayClass = ' class="today"';
- }
- calendar += '<td' + todayClass + '>' + DayArray[j] + '</td>';
- }
- calendar += '</tr>';
- calendar += '</table>' + "\n";
- return calendar;
- }
- document.write(cal());
- </script>
- <div style="font-size:10pt;text-align:right;margin-top:0.5em;">
- <a href="//tips.recatnap.info/" target="_top">PCスキルの小技・忘却防止メモ</a> -
- <a href="//tips.recatnap.info/wiki/" target="_top">PCスキルの小技・忘却防止メモのまとめ(wiki)</a>
- </div>
- <div style="font-size:10pt;text-align:center;margin-top:0.5em;padding:0.5em;border-top:1px solid #ccc;">
- Copyright © 2009 by PCスキルの小技・忘却防止メモ. All rights reserved.
- </div>
- </body>
- </html>