- ベストアンサー
Javascriptでカレンダー表示における表示不具合について
- 営業日カレンダースクリプトを利用する際、3月31日の後におかしな表示が発生する問題があります。
- 具体的には、4月の開始日が2009/4/1なら水曜日から始まらなければならないところが金曜日から始まっています。
- 制作者に連絡する方法がわからず、解決策が見つかりません。Javascriptに詳しい方の助けをお願いします。
- みんなの回答 (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 になってしまう現象です。
その他の回答 (1)
- equinox2
- ベストアンサー率48% (321/660)
質問者の書かれたScriptではないので、あまり細かいことは書きませんが・・ 3/31以外にも、当日が大の月の月末で、大の月から小の月に変わる際に 不具合が発生しています。 new Date(); を使用した後に、月を更新する際(たとえば3月⇒4月の時) 月を設定した時点で、31日がない月であれば翌月に変わってしまっています。 new Date(); を使用している箇所で、setMonth()で月を設定する 前に、setDate(1)などで、日付を31日以外にしてください。
お礼
あ、すみません。上記の補足はお礼のつもりでした(^^;
補足
なるほど、大の月(31日等)から小の月(31日より小さい月)に変わる際に発生しているのですね。ということは年の結構な回数が不具合になるわけですね。。。 とりあえず、アドバイスいただいたように「setDate(1)」を指定して、現在確認したところでは不具合はないように思います。 具体的な解決策になっているのかどうかわかりませんが、これで様子を見てみます。 フリーのスクリプトとはいえ、自作ではないのでここにスクリプトを記述することに抵抗があったため、わざわざサイトにいってみてもらうような回りくどいことをしています。 ありがとうございました。
お礼
例文までいただきありがとうございます。 該当部分をいくつか修正して、とりあえず動いておりますので、おそらくは大丈夫だと思います。 ありがとうございました。