JavaScript でカレンダー を作成しました。 少々重いですけど。
| 前月 | 今月 | 来月 |
|---|---|---|
今年一年分です。
来年一年分です。
// -*-mode: Text; coding: iso-2022-jp; -*-
// /home/tetsu/public_html/js/cal.js
// created: November 06,2001 Tuesday 02:22:28
// author: tetsu(WATANABE Tetsuya)
// $Id: cal.js,v 1.5 2007/12/04 00:10:09 tetsu Exp $
function year_off() {
if (navigator["userAgent"].indexOf("MSIE", 0) == -1) {
return 1900;
} else {
return 0;
}
}
function mksyunbun(year) {
var v;
if (year < 2000) {
v = 2213;
} else {
v = 2089;
}
return Math.floor((31 * year + v)/128) - Math.floor(year/4) + Math.floor(year/100);
}
function mksyubun(year) {
var v;
if (year < 2000) {
v = 2525;
} else {
v = 2395;
}
return Math.floor((31 * year + v)/128) - Math.floor(year/4) + Math.floor(year/100);
}
function calendar(opt_year, opt_month) {
var mday_arr = new Array(31);
var holiday = new Array(31);
var year, month, mday;
var date_obj = new Date();
var monday = 0;
var i;
if (opt_year) {
year = opt_year;
} else {
year = date_obj.getYear() + year_off();
}
if (opt_month) {
month = opt_month;
} else {
month = date_obj.getMonth() + 1;
}
if (year == (date_obj.getYear() + year_off()) &&
month == (date_obj.getMonth() + 1)) {
mday = date_obj.getDate();
} else {
mday = 0;
}
var syunbun = mksyunbun(year);
var syubun = mksyubun(year);
var lastday = 31;
for (i = 1; i <= 31; i++) {
mday_arr[i] = new Date(Date.UTC(year, month - 1, i));
holiday[i] = "";
if (month - 1 != mday_arr[i].getMonth()) {
lastday = i - 1;
break;
}
if (mday_arr[i].getDay() == 1) {
monday++;
}
if (month == 1 && i == 1) {
holiday[i] = "元旦";
} else if (i == 15 && month == 1 && year < 2000) {
holiday[i] = "成人の日";
} else if (monday == 2 && month == 1 && mday_arr[i].getDay() == 1 && year >= 2000) {
holiday[i] = "成人の日";
} else if (i == 11 && month == 2) {
holiday[i] = "建国記念の日";
} else if (i == syunbun && month == 3) {
holiday[i] = "春分の日";
} else if (i == 29 && month == 4 && year < 2007) {
holiday[i] = "みどりの日";
} else if (i == 29 && month == 4 && year >= 2007) {
holiday[i] = "昭和の日";
} else if (i == 3 && month == 5) {
holiday[i] = "憲法記念日";
} else if (i == 4 && month == 5 && year >= 2007) {
holiday[i] = "みどりの日";
} else if (i == 5 && month == 5) {
holiday[i] = "こどもの日";
} else if (i == 20 && month == 7 && year >= 1996 && year <= 2002) {
holiday[i] = "海の日";
} else if (monday == 3 && month == 7 && mday_arr[i].getDay() == 1 && year >= 2003) {
holiday[i] = "海の日";
} else if (i == 15 && month == 9 && year <= 2002) {
holiday[i] = "敬老の日";
} else if (monday == 3 && month == 9 && mday_arr[i].getDay() == 1 && year >= 2003) {
holiday[i] = "敬老の日";
} else if (i == syubun && month == 9) {
holiday[i] = "秋分の日";
} else if (i == 10 && month == 10 && year < 2000) {
holiday[i] = "体育の日";
} else if (monday == 2 && month == 10 && mday_arr[i].getDay() == 1 && year >= 2000) {
holiday[i] = "体育の日";
} else if (i == 3 && month == 11) {
holiday[i] = "文化の日";
} else if (i == 23 && month == 11) {
holiday[i] = "勤労感謝の日";
} else if (i == 23 && month == 12 && year >= 1989) {
holiday[i] = "天皇誕生日";
}
}
if (year >= 1986) {
i = 1;
while (i < lastday - 2) {
if (holiday[i] != "" && holiday[i + 1] == "" && holiday[i + 2] != "" && mday_arr[i + 1].getDay() != 0) {
holiday[i + 1] = "国民の休日";
i++;
}
i++;
}
}
var month_name = new Array(12);
month_name[1] = 'January';
month_name[2] = 'February';
month_name[3] = 'March';
month_name[4] = 'April';
month_name[5] = 'May';
month_name[6] = 'June';
month_name[7] = 'July';
month_name[8] = 'August';
month_name[9] = 'September';
month_name[10] = 'October';
month_name[11] = 'November';
month_name[12] = 'December';
document.write("<code>");
var d = Math.floor((20 - (month_name[month].length + 5))/2);
for (i = 0; i < d; i++) {
document.write(' ');
}
document.write('<i>', month_name[month], ' ', year, '</i>');
for (i = 0; i < d; i++) {
document.write(' ');
}
document.writeln("<br>");
document.write("<i>Su Mo Tu We Th Fr Sa</i>");
var start_wday = mday_arr[1].getDay();
var ln_count = 0;
if (start_wday != 0) {
document.writeln("<br>");
ln_count++;
}
for (i = 0; i < start_wday; i++) {
document.write(' ');
}
for (i = 1; i <= lastday; i++) {
var wday = mday_arr[i].getDay();
var flag = 0;
if (wday == 0) {
document.writeln("<br>");
ln_count++;
document.write("<font color=\"red\">");
} else if (wday == 6) {
document.write("<font color=\"red\">");
} else if (year >= 1973 && wday == 1 && i > 1 && holiday[i - 1] != "") {
document.write("<font color=\"red\">");
flag = 1;
} else if (year >= 2005 && wday == 2 && i > 2 && holiday[i - 1] != "" && holiday[i - 2] != "") {
document.write("<font color=\"red\">");
flag = 1;
} else if (year >= 2005 && wday == 3 && i > 3 && holiday[i - 1] != "" && holiday[i - 2] != "" && holiday[i - 3] != "") {
document.write("<font color=\"red\">");
flag = 1;
} else if (year >= 2005 && wday == 4 && i > 4 && holiday[i - 1] != "" && holiday[i - 2] != "" && holiday[i - 3] != "" && holiday[i - 4] != "") {
document.write("<font color=\"red\">");
flag = 1;
} else if (year >= 2005 && wday == 5 && i > 5 && holiday[i - 1] != "" && holiday[i - 2] != "" && holiday[i - 3] != "" && holiday[i - 4] != "" && holiday[i - 5] != "") {
document.write("<font color=\"red\">");
flag = 1;
} else if (holiday[i] != "") {
document.write("<font color=\"red\">");
flag = 1;
}
if (i < 10) {
document.write(' ');
}
if (mday == i) {
document.write(i.toString().bold());
} else {
document.write(i);
}
if (wday != 6) {
document.write(' ');
}
if (wday == 0 || wday == 6 || flag == 1) {
document.write("</font>");
flag = 0;
}
}
document.writeln("<br>");
ln_count++;
for (i = ln_count; i < 7; i++) {
document.writeln("<br>");
}
document.writeln("</code>");
}