特定の年の週番号から日付を自動的に取得する

特定の年の週番号から日付を自動的に取得する

週番号に基づいて日付を自動的に出力する方法はありますか?

もっと正確に言うと、特定の年の週番号を入力すると、出力として月曜日から日曜日までの日付が取得されますか?

カレンダーを作成するためのパッケージはいくつかありますが、どれもこれを許可していないようです。誰か良いヒントを持っていますか?

(Taco Hoekwater は私の質問に近いことをしましたが、その逆でした: 週番号のマクロ

答え1

また追加しましたPGFCalendarの逆しかし、これと少しの計算を行えば、必要な週の正しい開始日と終了日を取得することができます。

PGFCalendarと私の拡張機能の両方TikZ-extこれらすべてに対して高レベルのインターフェースが提供されていないため、いくつかのカウント、値、変換を調整する必要があります。

これは、特定の週が実際にその年内にあるかどうかはチェックしません。 を使用する\weekinyear{174}{2021}と、以下のコードと同じ結果を得ることができます。

コード

\documentclass{article}
\usepackage{pgfcalendar-ext}
\makeatletter
\newcommand*\weekinyear[2]{% #1 = week, #2 = year
  \pgfcalendardatetojulian{#2-01-01}{\count@}%
  \edef\wiy@first{\the\count@}%
  \pgfcalendarjuliantoweekday{\count@}{\count@}%
  \edef\wiy@day{\the\count@}%
  \pgfcalendarjulianyeartoweek{\wiy@first}{#2}{\count@}%
  \ifnum\count@>1 \count@=0 \fi% first day might be in last week of prev year
  \pgfintset\count@{\wiy@first+(#1-\count@)*7-\wiy@day}%
  \pgfcalendarjuliantodate{\count@}{\wiyStartY}{\wiyStartM}{\wiyStartD}%
  \advance\count@ by 6
  \pgfcalendarjuliantodate{\count@}{\wiyEndY}{\wiyEndM}{\wiyEndD}%
}
\makeatother
\begin{document}
\weekinyear{18}{2024}
Week 18 in year 2024 starts on
Monday \wiyStartY-\wiyStartM-\wiyStartD\ and
ends on Sunday \wiyEndY-\wiyEndM-\wiyEndD.
\end{document}

出力

2024 年の第 18 週は、2024-04-29 月曜日に始まり、2024-05-05 日曜日に終わります。

関連情報