質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

2350閲覧

第何曜日かを取得する方法

tkshp

総合スコア174

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2021/04/10 16:54

前提・実現したいこと

こちらのサイトに、第何曜日かを取得するスクリプトが掲載されていますが、
もっとシンプルに組めないものかと思い、以下のようなコードを考えてみましたが、
このコードでも正しく第何曜日かを取得するスクリプトとして成立していますか?
なお、曜日の取得はgetDayメソッドを個別に呼び出せばよいと思っているので、
提示したサイトのcountにあたる部分の取得処理の書き換えを試みています。

JavaScript

1function getDayCount(date){ 2 return Math.ceil(date.getDate() / 7); 3}

もし合っていた場合、「合ってますよ」の一言では心許無いので、何か説明も含めてご回答いただけたらと思います。
もしくは、上記と同じコードを掲載しているサイトがあったら教えていただけませんか?
(こちらの方がシンプルなので正しければ掲載しているサイトがありそうなのですが、検索した限りでは見つからなかったです)
また間違っていた場合は、反例のご提示をお願いいたします。
ご教示お願いいたします。

試したこと

いくつかテストはしてみて、問題なさそうなことは確認しましたが、
やはりはっきりと正しいコードと判断するには自信がないです(質問のコードを掲載しているサイトが見つからなかったため)。

JavaScript

1 console.log(getDayCount(new Date(2021,3,1))); // 1 2 console.log(getDayCount(new Date(2021,3,2))); // 1 3 console.log(getDayCount(new Date(2021,3,3))); // 1 4 console.log(getDayCount(new Date(2021,3,4))); // 1 5 console.log(getDayCount(new Date(2021,3,5))); // 1 6 console.log(getDayCount(new Date(2021,3,6))); // 1 7 console.log(getDayCount(new Date(2021,3,7))); // 1 8 console.log(getDayCount(new Date(2021,3,8))); // 2 9 console.log(getDayCount(new Date(2021,3,9))); // 2 10 console.log(getDayCount(new Date(2021,3,10))); // 2 11 console.log(getDayCount(new Date(2021,3,11))); // 2 12 console.log(getDayCount(new Date(2021,3,12))); // 2 13 console.log(getDayCount(new Date(2021,3,13))); // 2 14 console.log(getDayCount(new Date(2021,3,14))); // 2 15 console.log(getDayCount(new Date(2021,3,15))); // 3

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

問題ありません。どうしても気になるなら、Math.ceil(i / 7) === Math.floor((i - 1) / 7) + 1を、1から31までiを回して同一かチェックすればいいだけです。

質問のコードを掲載しているサイトが見つからなかったため

この態度がよくないと思います。コードは探すものではなく、自分で考えて書くのが原則的なものです。

投稿2021/04/10 22:43

maisumakun

総合スコア146018

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tkshp

2021/04/11 03:58

ご回答ありがとうございました。 勉強になりました。
guest

0

まあ、いいんじゃないでしょうか。
日は1から31までしかないんですから、その全てでチェックしとけばいいと思いますよ

投稿2021/04/10 22:49

y_waiwai

総合スコア88042

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問