• ベストアンサー

明日・明後日・明々後日

<script language="javascript"> <!-- //変数宣言 var dtToday = new Date; var strMonth; var strDate; var strDay = new Array("<font color=\"red\">日</font>","月","火","水","木","金","<font color=\"blue\">土</font>"); //年月日を取得 strMonth = dtToday.getMonth() + 1; strDate = dtToday.getDate(); stsDate = dtToday.getDate() + 1; sttDate = dtToday.getDate() + 2; stuDate = dtToday.getDate() + 3; document.write("■"+strMonth+"月"+strDate+"日 "+strDay[dtToday.getDay()]+"曜日のお勧め<br>"); document.write("■"+strMonth+"月"+stsDate+"日 "+strDay[dtToday.getDay() +1]+"曜日のお勧め<br>"); document.write("■"+strMonth+"月"+sttDate+"日 "+strDay[dtToday.getDay() +2]+"曜日のお勧め<br>"); document.write("■"+strMonth+"月"+stuDate+"日 "+strDay[dtToday.getDay() +3]+"曜日のお勧め"); //--> </script> まず前提として、あまりスクリプトには詳しくありません。 とあるサイトのコピーペーストをもとに、「明日・明後日・明々後日」の部分の表示を推測で手を加えました。 一応ちゃんと表示されていました。 御察しかとは思いますが、今日が木曜で明々後日が日曜日です。 さっき気づいたのですが、日曜は 0 なので「日」ではなく「undefined」となってしまいました。 このままだとたぶん月末に、日にちも同じになるかと思います。 スクリプトはもっと勉強したいとは思ってますが、なかなか時間がさけず行き詰ってしまいました。 ・曜日  6 の次を 0 にする。 ・日にち 28 29 30 31 の次を 1 にする。 ということは察しがつきます。方法を御教授ください。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • asapinya
  • ベストアンサー率36% (40/109)
回答No.2

<script language="javascript"> <!-- //変数宣言 var dtToday = new Date(); var strMonth; var strDate; for (n=1; n<= 3; n++) { var strDay = new Array("<font color=\"red\">日</font>","月","火","水","木","金","<font color=\"blue\">土</font>"); //年月日を取得 strMonth = dtToday.getMonth() + 1; strDate = dtToday.getDate(); document.write("■"+strMonth+"月"+strDate+"日 "+strDay[dtToday.getDay()]+"曜日のお勧め<br>"); dtToday.setDate(strDate+n); } //--> </script> 自信はありませんが、こんなんでいかがでしょう? 日付に1を足して繰り返し処理を行っています。

ame-sanc
質問者

お礼

ご回答ありがとうございました。 いろいろ考えたのですが、4月28日に 4月28日 土曜日のお勧め 4月29日 日曜日のお勧め 4月30日 月曜日のお勧め 5月1日  火曜日のお勧め と表示させたいと思ったのですが、日にち・曜日だけでなく月のことも考えなければ ならないことに気づきました。 曜日だけ変更にして、表示の仕方を変えたほうがいいかもしれません。 参考になりましたありがとうございました。

その他の回答 (5)

  • t_wada
  • ベストアンサー率50% (3/6)
回答No.6

とりあえず、日付は以下のように、setDateし直すと、2007/04/35のような日付が指定されていても、自動的に2007/05/05のように変換してくれます。 this.date.setDate(this.date.getDate() + 5); で、お節介ながらスクリプトを組んでみましたので参考に。 <script language="javascript"> <!-- //変数宣言 var dtToday = { // 日付オブジェクト date : new Date(), // --------------------------------------- // addDateファンクション // // 日付オブジェクトの日にちを加算する // // param : n 加算する日数 // return : なし // --------------------------------------- addDate : function(n) { this.date.setDate(this.date.getDate() + n); }, // --------------------------------------- // getDateファンクション // // 日付オブジェクトの日にちを返却する // // param : なし // return : 日にち // --------------------------------------- getDate : function() { return this.date.getDate(); }, // --------------------------------------- // getMonthファンクション // // 日付オブジェクトの月を返却する // // param : なし // return : 月 (1~12) // --------------------------------------- getMonth : function() { return this.date.getMonth() + 1; }, // --------------------------------------- // getDayOfWeekファンクション // // 日付オブジェクトの曜日を返却する // ※ 日曜は赤字、土曜は青字で返却する // // param : なし // return : 曜日 (日~土) // --------------------------------------- getDayOfWeek : function() { var dayOfWeek; switch (this.date.getDay()) { case 0: dayOfWeek = "<font color=\"red\">日</font>"; break; case 1: dayOfWeek = "月"; break; case 2: dayOfWeek = "火"; break; case 3: dayOfWeek = "水"; break; case 4: dayOfWeek = "木"; break; case 5: dayOfWeek = "金"; break; case 6: dayOfWeek = "<font color=\"blue\">土</font>"; break; default: break; } return dayOfWeek; }, // --------------------------------------- // resetDateファンクション // // 日付オブジェクトを現在日に初期化しなおす // // param : なし // return : なし // --------------------------------------- resetDate : function() { this.date = new Date(); } } // 繰り返し日数 var loopSize = 4; // 繰り返し日数分繰り返す for (i = 0; i < loopSize; i++) { // 出力 document.write("■" + dtToday.getMonth() + "月" + dtToday.getDate() + "日 " + dtToday.getDayOfWeek() +"曜日のお勧め<br>"); // 日付を次の日に dtToday.addDate(1); } //--> </script>

  • VCAT
  • ベストアンサー率20% (16/79)
回答No.5

配列の中にタグをいれるとエラーを誘発する可能性あり ます。それと、日付スクリプトは生半可な知識で書くと あとでエライことになる。当日爆発型の一種の時限爆弾 だから。人のをそっくり埋め込むのは危険。

  • asapinya
  • ベストアンサー率36% (40/109)
回答No.4

すみません。No1です。 dtToday.setDate(strDate+n); ・・・ 誤 dtToday.setDate(strDate+1); ・・・ 正 の誤りでした。

noname#30818
noname#30818
回答No.3

例えば、これで2007/5/1がアラートされたら良いと思いませんか? var dtToday = new Date('2007/4/31') alert(dtToday) そうすると 今日の日付を一旦とって年 + "/" + 月 + "/" + 日 + 1としてDateの括弧内に入れて実行するとdtTodayに翌日の日付が入るのです。 それをまた年 、月 、日に分けて日に1を足し同じことを繰り返すと上手い具合になるんですけどね。 dtToday = new Date('2007/4/31')を実行して5/1を返すことを祈ります。

noname#39970
noname#39970
回答No.1

何が聞きたいのかがわからないんだけど? とりあえず曜日だけ > strDay[dtToday.getDay()] > strDay[dtToday.getDay()+1] > strDay[dtToday.getDay()+2] > strDay[dtToday.getDay()+3] ↓ dt = dtToday.getDay(); // 中略 // strDay[ dt ] // strDay[(dt+1)%7] // strDay[(dt+2)%7] // strDay[(dt+3)%7]

ame-sanc
質問者

お礼

質問が至らなくて申し訳ありません。 曜日の部分は解決いたしました。ありがとうございました。

関連するQ&A