カレンダーソフトに必須な機能は、その月が何日まであるのか?を調べることです。
どうするのか、こちらも考え込んでしまいました。2月は、閏年もあるし、簡単には、できない感じで。VBScriptだったら、いろいろな方法を思い付くのですが・・・。
で、月を移動するのところにあったように、こちらも偶然に今回の方法を発見しました。
- 月の0日は、前月の末日になるのです。new
Date(97,12,0)を実行すると、97年11月30日に自動的になるのです。
つまり、12月0日は、11月30日と計算してくれるのです。
これが分かったので、以下のScriptになりました
- 私が作ったカレンダーは、表示している年月がフォーム名がfm2、年がYear、月がMonthという名前のテキストボックスになっています。
//翌月の0日を指定すると、前月の末日になることを利用
w1= new
Date(eval(document.fm2.Year.value),eval(document.fm2.Month.value),0);//表示の翌月(月は表示のままを使用すると、-1しないので、翌月になります)
w2 = w1.getDate();//日(つまり月末日)の取り出し
月の移動や月末日を求めるときに、内部で調整が行われていますので、月と日に矛盾がでないように指定する必要があります。
例えば、2月31日指定のnew Date(97,1,31)を実行すると、になります。
又、1月32日指定のnew Date(97,0,32)を実行すると、になります。
負の数は、2月-1日指定のnew Date(97,1-1)を実行すると、になります。
以上のことで、何日後や何日前も単純に足し算や引き算で求めることが可能です。
|