LoginSignup
iwantit
@iwantit

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

JavaScript で任意の週の開始日と終了日を取得したい

JavaScript の関数で引数に、年、月、週番号で
その週の開始日と終了日の関数を作っています。

下記の関数をあるサイトで見つけたのですが
分からない部分があります。

function getStartDsyOfMonth(year, month, weekNumber) {

      let start = new Date(year, month - 1, (weekNumber - 1) * 7 + 1);
      let day = start.getDay();
      start.setDate(start.getDate() + (day ? 1 - day : -6));

      let end = new Date(start);
      end.setDate(end.getDate() + 6);

      return { start: start,  end: end }
}

の 「(day ? 1 - day : -6)」の部分は何をやっているのでしょうか?
どなたか解説お願いします。

start.setDate(start.getDate() + (day ? 1 - day : -6));
0

1Answer

三項演算子ですね。

diffという変数の有無を除けば、以下コードと同等です。

if (day) {
  const diff = 1 - day;
} else {
  const diff = -6;
}
start.setDate(start.getDate() + diff);

jsでは日曜が0なので、月〜土の場合はif(day)、日の場合はelseになります。
つまり計算結果は直前の月曜日の日付になります。

2

Comments

  1. @iwantit

    Questioner
    @rf_p様
    返信が遅れましてすみません。
    ご回答有難うございます。丁寧な解説ありがとうございました
  2. お役に立てたようで何よりです!

Your answer might help someone💌