翌月の第3日曜日に切り替える方法を教えてください

このQ&Aのポイント
  • ホームページで毎月第3日曜日の日付を表示していますが、月が替わると翌月に切り替わってしまいます。
  • その日(当月の第3日曜日)が過ぎてから翌月の第3日曜日に切り替えたいのですが、判定方法をご存知の方がいらっしゃいましたらご教示ください。
  • 現在はJavaScriptを使用してコーディングしています。当月と翌月の日付表示を考慮しています。
回答を見る
  • ベストアンサー

ホームページで毎月第3日曜日を表示しその日を過ぎた

ホームページで毎月第3日曜日の日付を表示していますが、月が替わると翌月に切り替わってしまいます。その日(当月の第3日曜日)が過ぎてから翌月の第3日曜日に切り替えたいのですが、判定方法をどなたかご存知の方がいらっしゃいましたらご伝授いただけますでしょうか? <script> var d=new Date(); d.setDate(14); for(var i=0;i<1;i++){ document.write(d.getFullYear()+"年"+(d.getMonth()+2)+"月"+(21-d.getDay())+"日 (日曜日)"); d.setMonth(d.getMonth()+1); } </script> で現在コーディングしています。 当月と翌月を出す事も考えています。 宜しくお願い致します。

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

こんな感じじゃない? <script> var d=new Date(); var d1=d.getDate();//今日は何日 d.setDate(14);//14日にセットして var d2=21-d.getDay();//今月の第3日曜 d.setMonth(d.getMonth()+(d1<=d2?0:1));//第3日曜日以降は月に1日たす for(var i=0;i<2;i++){ document.write(d.getFullYear()+"年"+(d.getMonth()+1)+"月"+(21-d.getDay())+"日 (日曜日)"); d.setMonth(d.getMonth()+1); } </script>

sorasun
質問者

お礼

yambejp様 早速ご回答頂きありがとうございます。 テストしたら、思ったように表示されるようになりました。 悩みが解決できてめちゃくちゃ嬉しいいです。 本当にありがとうございました。

関連するQ&A

  • javascriptで任意の曜日に日をプラス

    javascriptで任意の曜日に日をプラスさせたいです。 ●外部 //日付取得 var nweek = new Array("日","月","火","水","木","金","土"); var now = new Date(); var nYear = now.getFullYear(); var nMonth = now.getMonth() + 1; var nDate = now.getDate(); var nweekjp = now.getDay(); //配送日計算 var now = new Date(); now.setDate(nDate+7); var yYear = now.getFullYear(); var yMonth = now.getMonth() + 1 ; var yDate = now.getDate(); var yweekjp = now.getDay(); ●実行タグ <script type="text/javascript">document.write(""+yYear+"/"+yMonth+"/"+yDate+" ");</script><script type="text/javascript">document.write(""+nweek[yweekjp]+"曜日 ");</script> で、配送までの日付を取得させているのですが、 土日の配送が月曜日になるため、土曜日の場合は、日付を2日追加、日曜日の場合は、1日追加としたいのですが、どうすればいいでしょうか。 調べても日付取得方法ばかりで、困っています。 ご存知でしたら教えて下さい。 お願いします。

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

    毎週土曜日のみの日付を取得、プルダウンリストに表示させたい。 よろしくお願い致します。 表題の通りなのですが、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> もしお分かりの方がいらっしゃいましたら、ご教授頂けると幸いです。 どうぞよろしくお願い致します。

  • ○日後から○日間分のセレクトボックス:どこを直せばでいいのしょう?

    お世話になります。 友人から、「セレクトボックスの日付の並びがおかしい。直してほしい」と頼まれたのですが、開いてみたらJavascriptでした。 <option value = '' selected>------</option> <script language="javascript"> var Today = new Date(); var d = new Date(); var Youbi = new Array( "日", "月", "火", "水", "木", "金", "土" ); /* 2日後~14日後 までを表示 */ for ( var i = 2; i < 15; i++ ){ d.setDate( Today.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> </select> となっているのですが、現状ですと、このスクリプトで出来たセレクトボックスの最上段の、明後日の日付から来月の1日までの日付はちゃんと表示されるのですが、その先がいきなり1ヶ月跳んでその次は1ヶ月と2日跳んで…といった表示になってしまいます。 2006年04月29日(土) 2006年04月30日(日) 2006年05月01日(月) 2006年06月01日(木) 2006年07月03日(月) 2006年08月03日(木) 2006年09月04日(月) と言った具合です。 私はこのスクリプトを見ても計算内容か殆ど理解できないので、バグを見つけて直すことが出来ません。 このスクリプトで、月や年をまたいでも正常に「今日の2日後から14日間分」のセレクトボックスを表示できるようにするにはどこをどう書き換えれば良いのでしょうか? お手数ですが、どうかよろしくお願いします。

  • javascriptで質問

    javascript初心者です。 日付で自動的に変わるようなメニューが作りたいのですが もっとシンプルに簡潔にできますか? また、開いているページのタブの色を他と変えたいのですができますか? 以下ソース↓ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <title>スクリプトテスト</title> <style type="text/css"> .menu li{ list-style-type:none; float:left; border:solid 1px #666666; } .menu li a{ padding:5px; background:#eeeeee; display:block; } .menu li a:hover{ background:#ffffff; } </style> <script type="text/javascript"> <!-- var day01 = new Date(); var year01 = day01.getFullYear(); //年 var mon01 = day01.getMonth() + 1; //月 var date01 = day01.getDate(); //日 var day02 = new Date(); day02.setDate( day02.getDate()+1 ); var year02 = day02.getFullYear(); //年 var mon02 = day02.getMonth() + 1; //月 var date02 = day02.getDate(); //日 var day03 = new Date(); day03.setDate( day03.getDate()+2 ); var year03 = day03.getFullYear(); //年 var mon03 = day03.getMonth() + 1; //月 var date03 = day03.getDate(); //日 var day04 = new Date(); day04.setDate( day04.getDate()+3 ); var year04 = day04.getFullYear(); //年 var mon04 = day04.getMonth() + 1; //月 var date04 = day04.getDate(); //日 var day05 = new Date(); day05.setDate( day05.getDate()+4 ); var year05 = day05.getFullYear(); //年 var mon05 = day05.getMonth() + 1; //月 var date05 = day05.getDate(); //日 var day06 = new Date(); day06.setDate( day06.getDate()+5 ); var year06 = day06.getFullYear(); //年 var mon06 = day06.getMonth() + 1; //月 var date06 = day06.getDate(); //日 var day07 = new Date(); day07.setDate( day07.getDate()+6 ); var year07 = day07.getFullYear(); //年 var mon07 = day07.getMonth() + 1; //月 var date07 = day07.getDate(); //日 // --> </script> </head> <body> <ul class="menu"> <script type="text/javascript"> <!-- document.write('<li><a href="'+year01+mon01+date01+'.html">'+mon01+'月'+date01+'日'+'</a></li>'); //--> </script> <script type="text/javascript"> <!-- document.write('<li><a href="'+year02+mon02+date02+'.html">'+mon02+'月'+date02+'日'+'</a></li>'); //--> </script> <script type="text/javascript"> <!-- document.write('<li><a href="'+year03+mon03+date03+'.html">'+mon03+'月'+date03+'日'+'</a></li>'); //--> </script> <script type="text/javascript"> <!-- document.write('<li><a href="'+year04+mon04+date04+'.html">'+mon04+'月'+date04+'日'+'</a></li>'); //--> </script> <script type="text/javascript"> <!-- document.write('<li><a href="'+year05+mon05+date05+'.html">'+mon05+'月'+date05+'日'+'</a></li>'); //--> </script> <script type="text/javascript"> <!-- document.write('<li><a href="'+year06+mon06+date06+'.html">'+mon06+'月'+date06+'日'+'</a></li>'); //--> </script> <script type="text/javascript"> <!-- document.write('<li><a href="'+year07+mon07+date07+'.html">'+mon07+'月'+date07+'日'+'</a></li>'); //--> </script> </ul> </body> </html>

  • js getFullYear

    JavaScript getFullYearについて 以下ソースコード var makeDateString = function makeDateString(dateObject) { var intYear = dateObject.getFullYear(); var intMonth = dateObject.getMonth(); var intDate = dateObject.getDate(); var intDay = dateObject.getDay(); var strYear = intYear.toString(); var strMonth = intMonth.toString(); var strDate = intDate.toString(); var strDay = intDay.toString(); var dateString = strYear + "年" + strMonth + "月" + strDate + "日" + strDay + "曜日" ; document.write(dateString); return dateString; } getFullYear(); getMonth(); getDate(); getDay();とありますが何故、何年のところだけ「Full」と表記するのですか?

  • サマータイムの算出方法

    サマータイムをActionScriptで毎年自動的に算出したくて、以下のscriptを書いてみたのですが、上手くいきません。 //サマータイム開始日 3月の最終日曜日 today = new Date(); nowYear = today.getFullYear(); startXday = f_startST(); function f_startST(){  startStDay = new Date(nowYear,2,31);  for(i=31; i<24; i--){   startStDay.setDate(i);   if(startStDay.getDay() == 0){    return startStDay.getTime();   }  } } 3月の最終日曜を知りたいなら、31日から7日間の曜日を調べれば、 そのうち日曜に行き着くだろうと思ったんですが、 どうもsetDateの値がおかしいい気がします。 試しに、trace(startXday)をしてみたのですが、やっぱり「undefined」でした。 forの部分をなくし、setDate(26)にしてみると、 trace(startXday)は、正常に11432988・・・となるのですが・・・ どこがおかしいのでしょうか? 宜しくお願いいたします。

    • ベストアンサー
    • Flash
  • JS 日付表示

    JavaScript for文の日付表示について JavaScriptでfor文で日付表示したい場合、月末の最終日を取得するだけでは月の切り替えができないのでしょうか? 今日から一週間後までを表示するアプリを作りたいのですが1/31を過ぎると2/1にならず1/32と表示されてしまいます。 何か間違っている所ありますでしょうか? 以下ソースコード <script type="text/javascript"><!-- var now = new Date(); var y = now.getFullYear(); var m = now.getMonth() + 1; var d = now.getDate(); console.log(now); // Thu Jan 30 2014 00:00:00 GMT+0900 (東京 (標準時)) console.log(new Date(now.getFullYear(), now.getMonth() + 1, 0)); // Fri Jan 31 2014 00:00:00 GMT+0900 (東京 (標準時)) for(i=0;i<100;i++){ document.write(y + "/" + m + "/" + (d + i).toString() + "<br>"); } // --></script> <body> </body>

  • yyyy/mm/dd(aaa) hh:mm

    http://www9.plala.or.jp/oyoyon/html/script/modified.html を参考にしているのですが、 yyyy/mm/dd(aaa) hh:mm のように、「00時00分」まで表示するにはどうすればいいでしょうか? ----------------------------------------- <script type="text/javascript"> <!-- var day = new Date(document.lastModified); var y = day.getFullYear(); var m = day.getMonth() + 1; var d = day.getDate(); var week = new Array("日", "月", "火", "水", "木", "金", "土"); var w = week[day.getDay()]; if (m < 10) m = "0" + m; // 数値が1~9の時には if (d < 10) d = "0" + d; // 0 を追加してそろえる document.write("更新日時: " + y + "/" + m + "/" + d + " (" + w + ")"); // --> </script> ----------------------------------------- ここまでできたのですが、時間の表示方法がわかりません。 コピペで作ったので、javascriptは理解できていません。 ご教授よろしくお願いします。

  • 始めまして、23歳の事務系OLです。

    始めまして、23歳の事務系OLです。 最近HPの作成やデザインを行っているのですが、モバイルについて質問です(><) 普通のPC系のページであれば、「三日前~今日まで」の表示は下記のようなやり方で大丈夫だと思うのですが、モバイルサイトの場合でもそのようにスクリプトで日付を表示できるのでしょうか? 埋め込んでみたのですが、うまく表示されませんでした。 やり方はどんなでも構わないのですが、もしわかる方いたら教えた頂けると助かります^^ よろしくお願いいたします。 <script language="JavaScript" type="text/javascript"> <!-- weeks = new Array("(日)","(月)","(火)","(水)","(木)","(金)","(土)") ; today = new Date() ; today.setTime(today.getTime() - (3 * 24 * 3600 * 1000)); y = today.getFullYear() ; m = today.getMonth() +1 ; d = today.getDate() ; w = weeks[today.getDay()] ; document.write (m,"月",d,"日",w,""); //--> </script> ~ <script language="JavaScript" type="text/javascript"> <!-- weeks = new Array("(日)","(月)","(火)","(水)","(木)","(金)","(土)") ; today = new Date() ; y = today.getFullYear() ; m = today.getMonth() + 1 ; d = today.getDate() - 0 ; w = weeks[today.getDay() - 0] ; document.write (m,"月",d,"日",w,""); //--> </script> まで

  • スクリプトが分からなくて・・・

    スクリプトが分からなくて・・・ こんにちは。 23歳、事務系のOLです。 いま、HPの作成を行っているのですが、スクリプトがいまいちよくわからなくて>< 3日前の日付を常に表示するスクリプトが欲しいのですが、どのように作るのでしょうか? 下記のようにやってみたのですが、これだと月が替わって「1日」になると「-2日」となってしまいます。 良いやり方はないでしょうか;; <script language="JavaScript" type="text/javascript"> <!-- weeks = new Array("(日)","(月)","(火)","(水)","(木)","(金)","(土)") ; today = new Date() ; y = today.getFullYear() ; m = today.getMonth() + 1 ; d = today.getDate() - 3 ; w = weeks[today.getDay() - 3] ; document.write (m,"月",d,"日",w,""); //--> </script>

専門家に質問してみよう