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

毎週土曜日のみの日付を取得、プルダウンリストに表示させたい。

よろしくお願い致します。
表題の通りなのですが、Javascriptで「毎週土曜日の日付のみ」を取得して、
プルダウンリストで表示・選択させたいと考えております。

以前、任意での指定日以降(明日や明後日など)の日付と曜日を取得して、
プルダウンで表示・選択できるコード(下記のものです)を教えて頂いたのですが、
このような感じで土曜日の日付のみを表示・選択できるようになると理想です。

<script language="javascript">
//var Today = new Date();
//var d = new Date();
var Youbi = new Array( "日", "月", "火", "水", "木", "金", "土" );
/* ひと月後までを表示 */
for ( var i = 3; i < 31; i++ ){
var d = new Date();
d.setDate( d.getDate() + i );
/* 各要素を抽出(月と日は2桁で)*/
var sYer = "" + d.getFullYear();
var sMon = ( "00" + ( d.getMonth() + 1 ) ).match( /..$/ );;
var sDat = ( "00" + d.getDate() ).match( /..$/ );
var sDay = Youbi[ d.getDay() ];
/* <option>を書き出し */
document.write( "<option value = '" + sYer + "年" +sMon + "月" + sDat + "日" + "'>" +sYer + "年" + sMon + "月" + sDat + "日(" + sDay + ")</option>\n" ); }
</script>

もしお分かりの方がいらっしゃいましたら、ご教授頂けると幸いです。
どうぞよろしくお願い致します。

A 回答 (4件)

ざっと・・・



var d = new Date();
var n= 6;//土曜日
d.setDate( d.getDate() - d.getDay() % 7 + n);

とすると、曜日を7で割った余りを日付からひくと必ず
日曜日になるので、今日のつぎの土曜日がひろえます。
これを7ずつ加算していくといいでしょう。
(selectはみにくいので今回は普通にテキストを書いています)

<script>
var Youbi = new Array( "日", "月", "火", "水", "木", "金", "土" );
var d = new Date();
var n= 6;//土曜日
d.setDate( d.getDate() - d.getDay() % 7 + n);
for ( var i = 0; i < 100; i+=7 ){
d.setDate( d.getDate() +i);
var sYer = "" + d.getFullYear();
var sMon = ( "00" + ( d.getMonth() + 1 ) ).match( /..$/ );;
var sDat = ( "00" + d.getDate() ).match( /..$/ );
document.write(sYer + "年" + sMon + "月" + sDat + "日<br>");
}
</script>
    • good
    • 0
この回答へのお礼

早速のご回答、誠にありがとうございます。
ひとつお伺いしたいのですが、今日の日付から7日間空けて最初の土曜日を表示する方法というのはあるのでしょうか?

例えば今日の日付(3月9日)だったら次の土曜日は13日になるのですが、9日から13日までは7日間のスパンが空いていないので、その次の土曜日の20日が表示されるといったようなことです。

もしお分かりになるようでしたらご教授頂けると幸いです。
どうぞよろしくお願い致します。

お礼日時:2010/03/09 23:19

document.writeって好きになれないので…



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head><title>test</title>

<script type="text/javascript"><!--
window.onload = function() {
// id:対象セレクトのid, days:出力する日数
var id = 'test', days = 10;
var i, o = document.getElementById('test').options;
var dt, d = new Date();
o.length = 0;
d.setHours((6 - d.getDay()) * 24);

for (i=0; i<days; i++) {
dt = d.getFullYear() + '年';
dt += ('0' + (d.getMonth() + 1) ).match(/..$/) + '月';
dt += ('0' + d.getDate()).match(/..$/) + '日';
o[o.length] = new Option(dt + '(土)', dt);
d.setHours(7 * 24);
}
}
--></script>
</head>

<body>
<select name="test" id="test">
<option value="defaule">Defaule</option>
</select>
</body>
</html>
    • good
    • 1
この回答へのお礼

早速のご回答、誠にありがとうございます。
ひとつお伺いしたいのですが、今日の日付から7日間空けて最初の土曜日を表示する方法というのはあるのでしょうか?

例えば今日の日付(3月9日)だったら次の土曜日は13日になるのですが、9日から13日までは7日間のスパンが空いていないので、その次の土曜日の20日が表示されるといったようなことです。

もしお分かりになるようでしたらご教授頂けると幸いです。
どうぞよろしくお願い致します。

お礼日時:2010/03/09 23:19

#2です。



>今日の日付から7日間空けて最初の土曜日を表示する方法
7日を含むのか含まないのか不明ですが…

 i を1から始めればよいだけでは?
(算出方法を考えてみればわかるはず。考え方は#1様が説明なさっています。)
    • good
    • 0
この回答へのお礼

無事解決することが出来ました。
最後までお付き合い頂きありがとうございました。

お礼日時:2010/03/12 00:24

>今日の日付から7日間空けて最初の土曜日



for ( var i = 7; i < 100; i+=7 ){
と、7日後から始めるようにしてください。
i=0というのは今日(0日後)から始めるという意味になります。
    • good
    • 0
この回答へのお礼

無事解決することが出来ました。
最後までお付き合い頂きありがとうございました。

お礼日時:2010/03/12 00:24

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