
Ist es möglich, datetime2
von hier aus den Vormonat zu berechnen \today
? (Alternativ ein anderes Paket).
Ich habe einige Lösungen gefunden, bei denen negative Abzüge von Tagen verwendet werden, was jedoch gegen Ende des Monats zu Problemen führen würde.
Beispiel: \today
= 12-JUL-2017
Gewünschte Ausgabe: „Heute ist der 12. Juli 2017. Letzter Monat war Juni.“
Antwort1
Sie können das aktuelle Datum mit speichern \DTMsavenow
und dann \DTMfetchmonth
und DTMmonthname
oder die entsprechenden Ausdrücke verwenden, um den vorherigen (oder nächsten) Monat zu berechnen. Ich habe sowohl eine als \lastmonth
auch \nextmonth
eine Version hinzugefügt.
\documentclass{article}
\usepackage[calc]{datetime2}
\usepackage{ifthen}
\newcommand\lastmonth[1]{\ifthenelse{\DTMfetchmonth{#1}=1}
{\DTMmonthname{12}}{\DTMmonthname{\numexpr\DTMfetchmonth{#1}-1\relax}}}
\newcommand\nextmonth[1]{\ifthenelse{\DTMfetchmonth{#1}=12
{\DTMmonthname{1}}{\DTMmonthname{\numexpr\DTMfetchmonth{#1}+1\relax}}}
\begin{document}
\DTMsavenow{today}
\DTMsavedate{jan20}{2017-01-20}
Today is \today.
Last month was \lastmonth{today}.
Today is \DTMusedate{jan20}.
Last month was \lastmonth{jan20}.
Next month is \nextmonth{jan20}.
\end{document}
Antwort2
Sie können dies auch ohne Pakete tun. Sie können Ihr eigenes \lastmonth
Makro definieren:
\documentclass{article}
% \setdate{<day>}{<month>}{<year>}
\newcommand{\setdate}[3]{\day=#1\month=#2\year=#3\relax}%
\newcommand{\lastmonth}{%
\ifcase\month\or% 0
December\or % 1
January\or % 2
February\or % 3
March\or % 4
April\or % 5
May\or % 6
June\or % 7
July\or % 8
August\or % 9
September\or % 10
October\or % 11
November\fi % 12
}
\begin{document}
Today is \today.
Last month was \lastmonth.
\setdate{20}{1}{2017}%
Today is \today.
Last month was \lastmonth.
\end{document}