- 締切済み
scriptの日付計算について
scriptについて質問です。 今実現したいことは、一ヶ月の中で、 今は第何週目かを自動計算させてselectboxに表示させたいです。例として:1月なら5日~11日が第1週目、12日~18日は第2週目、 19日~25日は第3週目、26日~2月1日が第4週目にしたいです。 下記は自分が考えたソースですが、正確ではありません。 ご教示をお願いします。 <scriptソース> var weekdays = [ "日", "月", "火", "水", "木", "金", "土" ]; var today = new Date(); var out = ""; var syu= new Date(n.getFullYear(), n.getMonth(), 1); //out += "第" + Math.floor(( + 6 ) / 7) + weekdays[today.getDay()] + "曜日\n"; out = Math.floor((today.getDate() - today.getDay() + 12 ) / 7); if (weekdays[syu.getDay()] != "月"){ out = out-1; } document.getElementById("selFromDate1").options[out-1].selected=true; <selectboxソース> <b>第</b> <select name="selFromDate1" id="selFromDate1"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select> <b>週目</b>
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- yambejp
- ベストアンサー率51% (3827/7415)
>後は、goボタンで動くのではなく、selectboxの初期表示を今の週にします。 スクリプトの最初に window.onload=function(){setSelect();} を書いておけばいけるはずです。
- yambejp
- ベストアンサー率51% (3827/7415)
#1です。ちなみにこんな感じでどうでしょ? <script> function setSelect(){ var d0 =new Date(); d0.setDate(d0.getDate()-(d0.getDay()+6)%7); var d1=new Date(d0.getFullYear(),d0.getMonth(),1); d1.setDate((9-d1.getDay())%7); var d2=(d0.getDate()-d1.getDate())/7+1; document.getElementById("selFromDate1").selectedIndex=(d2-1); } </script> <b>第</b> <select name="selFromDate1" id="selFromDate1"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select> <b>週目</b> <input type="button" value="go" onclick="setSelect()"> 考え方 d0=今週の月曜日 d1=今週の月曜日の月の最初の月曜日 d2=d1からd0までの経過週
- chie65536(@chie65535)
- ベストアンサー率44% (8754/19862)
>例として:1月なら5日~11日が第1週目、12日~18日は第2週目、 では「1月1日」は何週目になるんでしょう? EXCELのWEEKNUM関数では「1月1日」は「第1週目」になります。 週の初めを「月曜」とした場合は 月 火 水 木 金 土 日 1 2 3 4 1週目 5 6 7 8 9 10 11 2週目 12 13 14 15 16 17 18 3週目 とするのが一般的のようですが?
- yambejp
- ベストアンサー率51% (3827/7415)
月の最初の月曜を基準にするとかなり変な動作になりますが大丈夫? たとえば2015/2/1は5週目になりますがユーザーが混乱しませんか?
お礼
ご回答ありがとうございました。 教えていただいた通りで問題ありません。 後は、goボタンで動くのではなく、selectboxの初期表示を今の週にします。