
Gibt es eine Möglichkeit, das Datum automatisch basierend auf der Wochennummer auszugeben?
Genauer gesagt: Ich gebe die Kalenderwoche für ein bestimmtes Jahr ein und bekomme als Ausgabe das Datum von Montag bis Sonntag?
Es gibt mehrere Pakete zum Erstellen von Kalendern, aber keines davon scheint dies zu ermöglichen. Hat jemand einen guten Tipp?
(Taco Hoekwater hat etwas Ähnliches wie meine Frage gemacht, nur andersherum: Makro für Wochennummer)
Antwort1
Ich habe auch hinzugefügtdie Rückseite zu PGFCalendaraber wir können es und ein wenig Mathematik verwenden, um den richtigen Start- und Endtag der gewünschten Woche zu ermitteln.
Sowohl PGFCalendar als auch meine ErweiterungTikZ-extstellen für nichts davon eine Schnittstelle auf hoher Ebene bereit, daher müssen wir mit einigen Zählungen, Werten und Konvertierungen jonglieren.
Dadurch wird nicht überprüft, ob eine bestimmte Woche tatsächlich im Jahr liegt. Sie können \weekinyear{174}{2021}
dasselbe Ergebnis wie im folgenden Code erhalten.
Code
\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}
Ausgabe
Woche 18 im Jahr 2024 beginnt am Montag, den 29.04.2024 und endet am Sonntag, den 05.05.2024.