電子書籍の厳選無料作品が豊富!

営業日カレンダースクリプトというサイトがあります。
http://www.calenderdayo.com/

このスクリプトを利用したとき、今日の日付が3月31日の時、翌4月以降のカレンダーの表示がおかしくなるときがあります。
3/30では表示はおかしくありません。4/1でもおかしくありません。現在確認できているのは3/31の時だけです。
具体的には4月の開始日が2009/4/1なら水曜日から始まらなければならないところが金曜日から始まっています。

制作者に連絡をしたくても、サイトに記述がないので連絡できませんでした。

Javascriptには詳しくないので、一応ソースを追ってみたりしたのですがよくわかりませんでした。
お解りの方がいれば、よろしくお願いします。

A 回答 (2件)

>具体的な解決策になっているのかどうかわかりませんが、これで様子を見てみます。



最良の解決策かどうかは判りませんが、以下のような現象ですので、
解とりあえず解決はできています。


var day = new Date();
day.setFullYear(year);
day.setMonth(nextMonth -1);

 上記のJavascriptのコードで、今日が 3/31 で nextMonth が 4 の場合、
 day.setMonth(nextMonth -1); を実行した時点で 4月 ではなく 5月 に
 なってしまう。

 これは、new Date(); を実行した時点で当日が設定されているために
 「日」が 31 になっており、そのまま「月」に 4 を設定すると、4/31 が
 ないため、5/1 になってしまう現象です。
    • good
    • 0
この回答へのお礼

例文までいただきありがとうございます。
該当部分をいくつか修正して、とりあえず動いておりますので、おそらくは大丈夫だと思います。
ありがとうございました。

お礼日時:2009/04/03 18:52

質問者の書かれたScriptではないので、あまり細かいことは書きませんが・・



3/31以外にも、当日が大の月の月末で、大の月から小の月に変わる際に
不具合が発生しています。

new Date();
を使用した後に、月を更新する際(たとえば3月⇒4月の時)
月を設定した時点で、31日がない月であれば翌月に変わってしまっています。

new Date(); を使用している箇所で、setMonth()で月を設定する
前に、setDate(1)などで、日付を31日以外にしてください。

この回答への補足

なるほど、大の月(31日等)から小の月(31日より小さい月)に変わる際に発生しているのですね。ということは年の結構な回数が不具合になるわけですね。。。
とりあえず、アドバイスいただいたように「setDate(1)」を指定して、現在確認したところでは不具合はないように思います。
具体的な解決策になっているのかどうかわかりませんが、これで様子を見てみます。

フリーのスクリプトとはいえ、自作ではないのでここにスクリプトを記述することに抵抗があったため、わざわざサイトにいってみてもらうような回りくどいことをしています。

ありがとうございました。

補足日時:2009/04/03 10:36
    • good
    • 0
この回答へのお礼

あ、すみません。上記の補足はお礼のつもりでした(^^;

お礼日時:2009/04/03 10:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!