Wie berechnet man den vorherigen Monat ab \heute mit datetime2?

Wie berechnet man den vorherigen Monat ab \heute mit datetime2?

Ist es möglich, datetime2von 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 \DTMsavenowund dann \DTMfetchmonthund DTMmonthnameoder die entsprechenden Ausdrücke verwenden, um den vorherigen (oder nächsten) Monat zu berechnen. Ich habe sowohl eine als \lastmonthauch \nextmontheine 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}

Ausgabe des Codes

Antwort2

Sie können dies auch ohne Pakete tun. Sie können Ihr eigenes \lastmonthMakro definieren:

Bildbeschreibung hier eingeben

\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}

verwandte Informationen