📅

週番号からその週の月曜日の日付を取得するには

Notion しゅふ会にて以下の質問がありました。
週番号から、その週の月曜日の日付を取得するフォーミュラって、どう書いたらいいのでしょう?
週は月曜始まりで、年はその年のものでいいという話だったので、すでに存在する二つの逆引き記事を紹介しました。
後者のものを使って、今日の曜日番号を取得できるので、その数値と与えられた週番号との差分を使うと計算できそうです。面白そうなので、この記事も作ることにしました。一つだけ懸念があって、1/1 が月曜日でなければ、前の年の日付が月曜日になるので、週番号が 53 になります。1 だけは次の年の月曜日が出てしまう可能性もありそうです。
  1. 今週の月曜日を取得したのちに週番号との差分を加算する
    1. lets( /* 現在時刻から今日の日付を作成し、変数 td に代入 */ td, now().formatDate("YYYY-MM-DD").parseDate(), /* td から曜日を減算し、今週の月曜日の日付を作成し、変数 md に代入 */ md, td.dateSubtract(td.day() - 1, "days"), /* md からその週の週番号を計算し、変数 wn に代入 */ wn, md.week(), /* 週番号プロパティとの週差分を調整 */ md.dateAdd(prop("週番号") - wn, "weeks") )
  1. parseDate を調べていたら週番号で日付が作れることがわかった。上の苦労はなんだったのか
    1. /* 週番号を二桁にした文字列を wnum にする */ let(wnum, /* 週番号に100を足したものを3桁の文字列に変換 */ (prop("週番号")+100).format() /* 先頭の1を外して2桁の数字にする -> wnum に代入 */ .substring(1), /* 現在の年と週番号を -W を使って連結 (例: 2023W01) */ [now().year(), wnum].join("W") /* ISO8601 の週番号文字列を日付に変換 */ .parseDate() )
週番号→月曜日の日付
名前
週番号
週初めの月曜日
週初めの月曜日(parseDate)