***カレンダー [#fa097f18]
:2008年大安カレンダー (日曜始まり) - 日めくりカレンダー.com|http://www.himekuricalendar.com/taiancalendar.cgi?year=2008&weekstart=0
:2019年(平成31年)カレンダー|http://www.benri.com/calendar/2019.html
:pdf de calendar 2|http://pdc2.u1m.biz/
:パソコンカレンダーサイト|http://www.pasokoncalendar.com/
:パソコンカレンダーサイト|http://www.pasokoncalendar.com/editor/yearb_form.php?year=2019
:指定年の・日本の祝日日付一覧|http://koyomi8.com/sub/syukujitsu_table.htm
:みんなのエクセル|https://all-excel.com/calendar.html


#html{{
<!--
//    calender.txt と言う名前でセーブしてください。

var WeekDays = new Array("日","月","火","水","木","金","土");
var Mdays = new Array(31,28,31,30,31,30,31,31,30,31,30,31);

// yy,mm の月の日数を返す
function GetMonthDays(yy,mm)
{
	Mdays[1] = 28;	// 閏年の処理開始
	if ((yy % 4) == 0) Mdays[1] = 29;
	if ((yy % 100) == 0) Mdays[1] = 28;
	if ((yy % 400) == 0) Mdays[1] = 29;	// 閏年の処理終了

	return Mdays[mm - 1];
}

// yy,mm,dd から年通日を計算する 1/1 は、1.0 とする
function GetYearDays(yy,mm,dd)
{
	var m,days;
	days = dd;
	m = GetMonthDays(yy,mm);	// 閏処理のためのダミー

	for (m = 0; m < (mm - 1); m++) days += Mdays[m];
	return days;
}

// AD 1.1.0 からの通日(JD - 0.5 の値)
function Ymd2Jd(yy,mm,dd) {
	var days,tmp,yym1;
	
	yym1 = yy - 1;
	days = 1721422;	//AD 1.1.0 の JD - 0.5
	Mdays[1] = 28;
	if (yy % 4 == 0) {
		Mdays[1] = 29;
		if (yy > 1582) {
			if (yy % 100 == 0) {
				Mdays[1] = 28;
				if (yy %400 == 0) {
					Mdays[1] = 29;
				}
			}
		}
	}
	days += Math.floor(365.25 * yym1 + 0.1);
	for (m = 0; m < (mm - 1) ; m++) {
		days += Mdays[m];
	}
	days += dd;
	if (days >= 2299160) days -= 10;	// 失われた十日の削除
	if (yym1 >= 1600) {
		days -= Math.floor((yym1 - 1600 + 0.1) / 100);
		days += Math.floor((yym1 - 1600 + 0.1) / 400);
	}
	return days;
}

// 曜日のインデックス(0-6)を返す。
// 通日計算にはYmd2Jd() を使用する。
function GetWeekDays(yy,mm,dd)
{
	var days;
	var TDate = new Date();
	
	days = Math.floor(Ymd2Jd(yy,mm,dd) + 2);
	days = days - Math.floor(days / 7) * 7;
	return days;
}

// 曜日の文字を返す('日' .. '土')
function GetWeekDayStr(yy,mm,dd)
{
	var idx;
	idx = GetWeekDays(yy,mm,dd);
	return WeekDays[idx];
}

// year,month から、春分・秋分の日付を計算する。
// month : 3 or 9  
var Syunbunpar1 = new Array(19.8277,20.8357,20.8431,21.8510);
var Syunbunpar2 = new Array(22.2588,23.2588,23.2488,24.2488);
function Syunbun(year,month)	// 春分の日、秋分の日を計算して答えを返す。1980-2099 : month = 3 or 9
{
	var ans,p1,tyear;

	if ((year >= 1851) && (year <= 1899)) p1 = 0;
	else if ((year >= 1900) && (year <= 1979)) p1 = 1;
	else if ((year >= 1980) && (year <= 2099)) p1 = 2;
	else if ((year >= 2100) && (year <= 2150)) p1 = 3;
	else return 0;	// エラー(範囲外)

	tyear = 1980;
	
	tyear = (year - tyear);
	if (month == 3) // 春分の日
	{
		ans = Math.floor(Syunbunpar1[p1] + 0.2421904 * tyear - Math.floor((tyear + 0.1)/4));
	}
	else if (month == 9) // 秋分の日
	{
		ans = Math.floor(Syunbunpar2[p1] + 0.2421904 * tyear - Math.floor((tyear + 0.1)/4));
	}
	else ans = 0;	// 春分でも秋分でもない
	return ans;
}

var dayend,month,year = -9999;
var gengouY = new Array(1868,1912,1926,1989);
var gengou  = new Array("明治","大正","昭和","平成");
var iwaimend = new Array(-1,-1); // 月末日が祝日となる月をセット。最後は -1
var iwaimends= new Array("","");	// 月末が祝日になる場合の祝日名

var IDD = new Array(368);
var MDD = new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);
var MDDt = new Array(13);

var iwaiday = new Array();	// 祝日月日
var iwaistr = new Array();	// 祝日名
var Iwai = new Array();	// 祝日基本配列

Iwai[0] = "101,1949,9000,元日";
Iwai[1] = "115,1949,1999,成人の日";
Iwai[2] = "151,2000,9000,成人の日";
Iwai[3] = "211,1967,9000,建国記念の日";
Iwai[4] = "398,1949,9000,春分の日";
Iwai[5] = "429,1949,1988,天皇誕生日";
Iwai[6] = "429,1989,2006,みどりの日";
Iwai[7] = "429,2007,9000,昭和の日";
Iwai[8] = "503,1949,9000,憲法記念日";
Iwai[9] = "504,2007,9000,みどりの日";
Iwai[10] = "505,1949,9000,こどもの日";
Iwai[11] = "720,1996,2002,海の日";
Iwai[12] = "761,2003,9000,海の日";
Iwai[13] = "915,1966,2002,敬老の日";
Iwai[14] = "961,2003,9000,敬老の日";
Iwai[15] = "999,1948,9000,秋分の日";
Iwai[16] = "1010,1966,1999,体育の日";
Iwai[17] = "1051,2000,9000,体育の日";
Iwai[18] = "1103,1948,9000,文化の日";
Iwai[19] = "1123,1948,9000,勤労感謝の日";
Iwai[20] = "1223,1989,9000,天皇誕生日";
Iwai[21] = "410,1959,1959,明仁親王の結婚の儀";
Iwai[22] = "224,1989,1989,昭和天皇の大喪の礼";
Iwai[23] = "1112,1990,1990,即位礼正殿の儀";
Iwai[24] = "609,1993,1993,徳仁親王の結婚の儀";
Iwai[25] = "811,2016,9000,山の日";

iwaistr[30] = "(振替休日)";	// 特別な休日
iwaistr[31] = "(国民の休日)";
iwaistr[32] = "(※休日※)";	// 2007から、振替休日とも従来の国民の休日ともつかない休日が出来る。

// 月初の通日配列初期化
function SetMDD(year) {
	var i;
	MDD[2] = 28;
	if (year % 4 == 0) {MDD[2] = 29;}
	if (year % 100 == 0) {MDD[2] = 28;}
	if (year % 400 == 0) {MDD[2] = 29;}
	MDDt[0] = 0;
	for (i = 1; i <= 12; i++) {
		MDDt[i] = MDDt[i-1] + MDD[i];	// 月始めの通日計算
	}
}

// MMDD→days 変換
function ConvMDDays(md) {
	var m,d;
	d = md % 100;
	m = (md - d) / 100;
	return MDDt[m-1] + d;
}

// 祝日の日付データの初期化。年が変わるときは必ず実行してね。
function InitIwai(year)
{
	var i,d;
  var tmp = new Array();
	var iwaidayS,iwaidayE;
	var baseday;

	for (i = 0; i < Iwai.length ; i++) {
		tmp = Iwai[i].split(",");
		iwaiday[i] = 0;
		iwaistr[i] = "";
		if ((year >= tmp[1] * 1) && (year <= tmp[2] * 1)) {
			iwaiday[i]  = tmp[0] * 1;
			iwaistr[i] = tmp[3];	// 祝日名
		}
	}
	SetMDD(year);	// 月初通日配列初期化
	Initvariable(year);	// 移動祝日の計算
	for (d = 1; d <= MDDt[12]+1 ; d++) {
		IDD[d] = -1;
	}
	for (i = 0; i < iwaiday.length; i++) {
		if (iwaiday[i] > 0) {
			IDD[ConvMDDays(iwaiday[i])] = i;	// その年に有効な祝日を計算
		}
	}

	if (year >= 1973) {	// 振替休日の処理
		baseday = GetWeekDays(year,1,0);
		for (d = 1; d <= MDDt[12] ; d++) {
			if ((IDD[d] >= 0) && ((d + baseday) % 7 == 0)) {
				if (year < 2007) {	// 2007改正以前
					if (year == 1973) {	// 1973.4.12以降有効
						if (d >= 102) {
							if (IDD[d + 1] <= 0) {
								IDD[d + 1] = 30;	// 振替休日
			 				}
						}
					} else {	// 1974以後
						if (IDD[d + 1] <= 0) {
							IDD[d + 1] = 30;	// 振替休日
				 		}
					}
				} else {	// 2007改正後
					j = 0;
					for (j = 1; j < 7; j++) {	// 無限ループ回避(年末処理無し。手抜きだ)
						if (IDD[d + j] < 0) {
							IDD[d + j] = 30;	// 振替休日
							break;
						}
					}
				}
			}
		}
	}

	if (year >= 1986) {	// 国民の休日
		for (d = 1; d <= MDDt[12] - 2 ; d++) {
			if ((IDD[d] >= 0) && (IDD[d] < 30)) {	// 祝日(振替は含まず)
				if ((IDD[d + 2] >= 0) && (IDD[d + 2] < 30)) {
					if (year < 2007) {	// 2007改正前
						if ((IDD[d + 1] < 0) && ((d + 1 + baseday) % 6 != 0)) {
							IDD[d + 1] = 31;	// 国民の休日
						}
					} else {	// 2007改正後
						if ((IDD[d + 1] < 0) || (IDD[d + 1] >= 30)) {
							if (IDD[d + 1] >= 30) {
								IDD[d + 1] = 32;	// 振替休日で国民の休日でもある日。「休日」とだけ表示
							} else {
								IDD[d + 1] = 31;	// 国民の休日と表示
							}
						}
					}
				}
			}
		}
	}
}

// 西暦年を元号に変換。明治~平成まで。月のチェックをしていないので、元年の表示はちょっと変。
function GetGengouY(year)
{
	var i,ie,yy;
	yy = '';
	ie = gengouY.length;
	for (i = ie ; i > 0 ; i--)
	{
		if (year >= gengouY[i])
		{
			yy = gengou[i] + (year - gengouY[i] + 1).toString(10) + '年';
			break;
		}
	}
	return yy;

}
// 移動祝日の日付計算(iwaiday[] の数字設定)
function Initvariable(year)
{
	var i,j,day,tmp,mon;

	for (i = 0; i < iwaiday.length ; i++) {
		tmp = iwaiday[i] % 100;
		if (tmp == 98) iwaiday[i] = 300 + Syunbun(year,3);	// 春分の日の計算
		if (tmp == 99) iwaiday[i] = 900 + Syunbun(year,9);	// 秋分の日の計算
		if ((tmp >	31) && (tmp < 90)) {
			mon = Math.floor(iwaiday[i] / 100);
			day = tmp % 10;
			tmp = (Math.floor(tmp / 10) - 4) * 7 + 1;
			for (j = tmp; j < (tmp + 7); j++) {	// 第何週の何曜日という祝日の計算 51 : 第2週の月曜
				if (GetWeekDays(year,mon,j) == day) {
					iwaiday[i] = mon * 100 + j;
					break;
				}
			}
		}
	}
}


// 春分、秋分の日付の設定(iwaiday[] の数字設定)
function InitSyunbun(year,month)
{
	var i,day,tmp;
	
	i = 0;
	day =0;
	
	tmp = -9999;
	if (month == 3) tmp = 398;
	if (month == 9) tmp = 999;
	if (tmp < 0) return;

	for(i = 0; day < 5000 ; i++)
	{
		day = iwaiday[i];
		if (day == tmp)
		{
			iwaiday[i] = Syunbun(year,month) + month * 100;	// 春分と秋分の日付の計算
			break;
		}
	} 
}

// year,monthのカレンダを作る。today が 0以下なら、「今日」のマークは入れない
// 月齢等の表示用に、拡張文字列挿入フラグ exflag & 挿入文字列 exstr をパラメータに追加
// exflag が 1 なら、日付表示後に拡張文字列を挿入する 2000.04.08
// 2005年の昭和の日法案により、振替休日の扱い変更 2005.07.19
function calender_main(wd,year,month,today,exflag,exstr)
{
	var i,dflag,day,zeroday;

	InitIwai(year);	// 祝日日付配列の初期化
	zeroday = Ymd2Jd(year,month,0) - Ymd2Jd(year,1,0);	// 0 日の年通日
	dayend = GetMonthDays(year,month);

	if (today <= 0) today = -99;	// today が 0 以下なら、今日の日付チェックは不要

	wd.document.writeln('<table border bgcolor="#ffffaa">');
	wd.document.writeln('<caption><strong>' + year + '年' + month + '月' + '</strong></caption>');
	for (i = 0; i < 7 ; i++)
	{
		if (i == 0) wd.document.write('<tr><th bgcolor="#ffaaaa">' + WeekDays[i] + '</th>');
		else if (i == 6) wd.document.writeln('<th bgcolor="#aaaaff">' + WeekDays[i] + '</sth></tr>');
		else wd.document.write('<th>' + WeekDays[i] + '</th>');
	}

	day = GetWeekDays(year,month,0);	// 0日の曜日を求める(日曜日 = 0)
	day = -day;
	if (day == -6) day = 1;	// 前月末日が土曜日なら先頭の空白は入れる必要なし
	for (;;)
	{
		wd.document.write('<tr align="right">');
		for (i = 0; i < 7 ; i++)
		{
			dflag = i;
			if ((day >= 1) && (day <= dayend)) {
				if (IDD[day + zeroday] >= 0) dflag = 0;	// 祝日か休日
				if (day == today) dflag = -1;	// 今日です
			}

			if (dflag == -1) wd.document.write('<td bgcolor="#aaaaaa">');
			else if (dflag == 0) wd.document.write('<td bgcolor="#ffaaaa">');
			else if (dflag == 6) wd.document.write('<td bgcolor="#aaaaff">');
			else wd.document.write('<td>');
			if ((day >= 1) && (day <= dayend))
			{
				wd.document.write(day);
				if (exflag == 1) // exflag = 1 なら、拡張文字列の挿入
				{
					wd.document.write(exstr);
				}
			}
			else wd.document.write('&nbsp;');
			wd.document.writeln('</td>');
			day++;
		}
		wd.document.writeln('</tr>');
		if (day > dayend) break;
	}

	wd.document.writeln('<tr bgcolor="#ffffff"><th align="left" colspan="7">今月の祝日・休日</th></tr>');

	dflag = 0;	// 祝日・休日の数を数える
	for (day = 1; day <= dayend ; day++) {
		if (IDD[day + zeroday] >= 0) {
			wd.document.writeln('<tr bgcolor="#ffffff"><td>' + day + '</td><td colspan="6" align="left">' + iwaistr[IDD[day + zeroday]] + '</td></tr>');
			dflag++;
		}
	}
	if (dflag <= 0) {
		wd.document.writeln('<tr bgcolor="#ffffff"><td align="left" colspan="7">祝日なし</td></tr>');
	}
	wd.document.writeln('</table>');
}

// year,monthのカレンダを作る。today が 0以下なら、「今日」のマークは入れない
// 月齢等の表示用に、拡張文字列挿入フラグ exflag & 挿入文字列 exstr をパラメータに追加
// ofswd はカレンダー表示の先頭曜日。
// exflag が 1 なら、日付表示後に拡張文字列を挿入する 2000.04.08
// 2005年の昭和の日法案により、振替休日の扱い変更 2005.07.19
function calender2(wd,year,month,today,ofswd,exflag,exstr)
{
	var WDF = new Array(' bgcolor="#ffaaaa"','','','','','',' bgcolor="#aaaaff"',' bgcolor="#aaaaaa"');
	var i,dflag,day,zeroday;
	var exi,day,firstWd,STflag;

	InitIwai(year);	// 祝日日付配列の初期化
	zeroday = Ymd2Jd(year,month,0) - Ymd2Jd(year,1,0);	// 0 日の年通日
	dayend = GetMonthDays(year,month);

	if (today <= 0) today = -99;	// today が 0 以下なら、今日の日付チェックは不要

	wd.document.writeln('<table border bgcolor="#ffffaa">');
	wd.document.writeln('<caption><strong>' + year + '年' + month + '月' + '</strong></caption>');

	wd.document.write('<tr>');
	for (i = 0; i < 7 ; i++) {
		exi = (ofswd + i) % 7;
		wd.document.write('<th' + WDF[exi] + '>' + WeekDays[exi] + '</th>');
	}
	wd.document.writeln('</tr>');

	firstWd = GetWeekDays(year,month,1);	// 1日の曜日を求める(日曜日 = 0)
	STflag = 0;	// 第一日の前
	day = 0;

	while (STflag < 2) {	// 2 なら終了
		wd.document.write('<tr align="right">');
		for (i = 0; i < 7 ; i++) {
			exi = (ofswd + i) % 7;
			if ((STflag == 0) && (exi == firstWd)) {
				STflag = 1;
				day = 1;
			}
			if (STflag == 1) {
				if (IDD[day + zeroday] >= 0) exi = 0;	// 祝日か休日
				if (day == today) exi = 7;	// 今日をマーク
				wd.document.write('<td' + WDF[exi] + '>');
				wd.document.write('' + day);
				if (exflag == 1) // exflag = 1 なら、拡張文字列の挿入
				{
					wd.document.write(exstr);
				}
				day++;
				if (day > dayend) STflag = 2;
			} else {
				wd.document.write('<td' + WDF[exi] + '>&nbsp;');
			}
			wd.document.write('</td>');
		}
		wd.document.writeln('</tr>');
	}

	wd.document.writeln('<tr bgcolor="#ffffff"><th align="left" colspan="7">今月の祝日・休日</th></tr>');

	dflag = 0;	// 祝日・休日の数を数える
	for (day = 1; day <= dayend ; day++) {
		if (IDD[day + zeroday] >= 0) {
			wd.document.writeln('<tr bgcolor="#ffffff"><td>' + day + '</td><td colspan="6" align="left">' + iwaistr[IDD[day + zeroday]] + '</td></tr>');
			dflag++;
		}
	}
	if (dflag <= 0) {
		wd.document.writeln('<tr bgcolor="#ffffff"><td align="left" colspan="7">祝日なし</td></tr>');
	}
	wd.document.writeln('</table>');
}

// 現在のページに拡張表示文字列を挿入しないシンプルなカレンダーを表示を指示するための関数
// 単に内部でcalender_main()を呼び出すだけ
function calender(YY,MM,DD)
{
	calender_main(this,YY,MM,DD,0,"");
	document.writeln(YY + ' : ' + MM + ' : ' + DD + ' <br>');
}

// -->
}}

***始まり自由カレンダー [#ra2df86e]

https://motto123.sakura.ne.jp/fc1.html

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS