アプリ版:「スタンプのみでお礼する」機能のリリースについて

<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 にする。

ということは察しがつきます。方法を御教授ください。よろしくお願いします。

A 回答 (6件)

<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を足して繰り返し処理を行っています。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
いろいろ考えたのですが、4月28日に
4月28日 土曜日のお勧め
4月29日 日曜日のお勧め
4月30日 月曜日のお勧め
5月1日  火曜日のお勧め

と表示させたいと思ったのですが、日にち・曜日だけでなく月のことも考えなければ
ならないことに気づきました。

曜日だけ変更にして、表示の仕方を変えたほうがいいかもしれません。
参考になりましたありがとうございました。

お礼日時:2007/04/12 03:28

とりあえず、日付は以下のように、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>
    • good
    • 1

配列の中にタグをいれるとエラーを誘発する可能性あり


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

すみません。

No1です。
dtToday.setDate(strDate+n); ・・・ 誤
dtToday.setDate(strDate+1); ・・・ 正
の誤りでした。
    • good
    • 0

例えば、これで2007/5/1がアラートされたら良いと思いませんか?


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

dtToday = new Date('2007/4/31')を実行して5/1を返すことを祈ります。
    • good
    • 0

何が聞きたいのかがわからないんだけど?



とりあえず曜日だけ

> 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]
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/04/12 03:15

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