2018年4月第2週が、4月の何日から何日までかなどを求める方法を教えてください(>_<)
例えば上の例だと2日から8日みたいな感じで
月曜から始まって日曜で終わる
4月の1日の日曜は第1週としたいです
年、月、第何週か
この3つのデータからjavascriptでそれが何日から何日であるかを知りたいです







回答2件
あなたの回答
tips
プレビュー
\r\n```\r\n\r\nこれをHTMLの上の方に差し込むと`moment`という関数が使えるようになります。\r\nあなたのサイトに差し込んで開いた後に、F12を押してコンソール画面を開いてください。\r\n(コンソールで打ち込んで確認するだけならMoment.jsの公式サイト内でも可能です。)\r\n\r\n---\r\n\r\n> 2018年4月第2週を求める\r\n\r\nまずは4月1日を作りましょう。\r\n日付けは下記のフォーマットで確認出来ます。\r\n\r\n[Docment parse object](https://momentjs.com/docs/#/parsing/object/)\r\n[Document display format](https://momentjs.com/docs/#/displaying/format/)\r\n\r\n```JavaScript\r\nvar date = moment({\r\n y: 2018,\r\n M: 4 - 1, // JSの罠で月だけ0スタートなので1引いておく\r\n d: 1\r\n}\r\nconsole.log(date.format('YYYY/MM/DD'))\r\n// 2018/04/01\r\n```\r\n\r\n次に週末にジャンプします。\r\n週末への移動は`endOf`というメソッドが用意されているので楽勝です。\r\n\r\n[Document manipulate end-of](https://momentjs.com/docs/#/manipulating/end-of/)\r\n\r\n```JavaScript\r\ndate.endOf('week');\r\nconsole.log(date.format('YYYY/MM/DD'))\r\n// 2018/04/07\r\n```\r\n\r\n内部的には週末土曜日の23:59:59の時刻になっていますので、\r\nもし日曜日スタートが良いなら1日足しましょう。\r\nもし月曜日スタートが良いなら2日足しましょう。\r\n\r\n今回は月曜日スタートなので+2日ですね。\r\n\r\n[Document manipulate add](https://momentjs.com/docs/#/manipulating/add/)\r\n\r\n```JavaScript\r\ndate.add(2, 'days')\r\nconsole.log(date.format('YYYY/MM/DD'))\r\n// 2018/04/09\r\n```\r\n\r\n> 4月の何日から何日までかなどを求める\r\n\r\n1週間は基本的に7日なので最初の日から6日足した数になります。\r\ndate.formatで出力した日数は文字列なので、\r\n計算する前にparseIntを使って数値に戻してあげましょう。\r\n\r\n```JavaScript\r\nvar start = parseInt(date.format('DD'))\r\nvar end = start + 6\r\nconsole.log(start, end) // 9, 16\r\n```\r\n\r\n従って、第二週は9〜16日です。\r\nあれ?ちょっと待ってください、質問文の条件は日曜日が週末扱いなので1週間ずれていますね。\r\nこのように月曜日スタートかつ1日目が日曜日の場合、\r\nMoment.jsでは日曜日を週の初めとしますので丸々1週間分ずれます。\r\n従って7日減算して対応しましょう。\r\n\r\n```JavaScript\r\nvar start = parseInt(date.format('DD'))\r\nif (start > 7) {\r\n start = start - 7\r\n}\r\nvar end = start + 6\r\nconsole.log(start, end) // 2, 8\r\n```\r\n\r\n※もし最終週を求める場合は週の途中で月が変わる可能性が高いので、別途月末のものを作成して日付けが超えそうなら少ない方の日数を答えとしましょう。\r\n\r\n---\r\n\r\nいかがですか?\r\nMoment.jsが最強ということが分かったと思います。\r\n\r\n困ったらMoment.jsのドキュメントを眺めていれば「おっ、これ日付け計算に使えそうじゃん」というメソッドが必ず用意されています。\r\n私もこのドキュメントは一通り暗記してあって、主なものはすぐに使えますし、忘れてしまってもああいう事はこの辺に書いてあったっけということですぐに調べて作り上げる事が出来ます。\r\n\r\nまずはこのドキュメントを上から下までしっかり読んでみて下さい。\r\nそうすればすぐに日付け計算のエキスパートになれますよ。","dateModified":"2018-04-26T08:38:17.001Z","datePublished":"2018-04-26T08:17:33.034Z","upvoteCount":2,"url":"https://teratail.com/questions/123633#reply-188348","comment":[{"@type":"Comment","text":"2週目は2日から8日と言っているので、これでは出ないと思いますが","datePublished":"2018-04-26T08:27:53.037Z","dateModified":"2018-04-26T08:27:53.037Z"},{"@type":"Comment","text":"おっと…書いてから\r\nMoment.jsは日曜〜土曜なのでたまにレアケースにぶち当たる気がしましたが、それが2018-04-01だったのですね…\r\n書き直しますので少々お待ちを","datePublished":"2018-04-26T08:31:07.242Z","dateModified":"2018-04-26T08:31:07.242Z"},{"@type":"Comment","text":"moment.js、使ったことあります!ありがとうございます、手が空いたのでやってみます","datePublished":"2018-04-26T09:59:34.045Z","dateModified":"2018-04-26T09:59:34.045Z"}]}],"breadcrumb":{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@id":"https://teratail.com","name":"トップ"}},{"@type":"ListItem","position":2,"item":{"@id":"https://teratail.com/tags/JavaScript","name":"JavaScriptに関する質問"}},{"@type":"ListItem","position":3,"item":{"@id":"https://teratail.com/questions/123633","name":"第何週が何日から何日か"}}]}}}
Q&A
解決済

退会済みユーザー
総合スコア0
投稿2018/04/26 05:51
2018年4月第2週が、4月の何日から何日までかなどを求める方法を教えてください(>_<)
例えば上の例だと2日から8日みたいな感じで
月曜から始まって日曜で終わる
4月の1日の日曜は第1週としたいです
年、月、第何週か
この3つのデータからjavascriptでそれが何日から何日であるかを知りたいです







回答2件
あなたの回答
tips
プレビュー