datetime2를 사용하여 오늘부터 이전 달을 계산하는 방법은 무엇입니까?

datetime2를 사용하여 오늘부터 이전 달을 계산하는 방법은 무엇입니까?

datetime2에서 이전 달을 계산하는 데 사용할 수 있습니까 \today? (또는 다른 패키지).

마이너스 공제를 사용하는 몇 가지 솔루션을 찾았지만 월말에 문제가 발생할 수 있습니다.

예: \today= 2017년 7월 12일

원하는 출력: "오늘은 2017년 7월 12일입니다. 지난 달은 6월이었습니다."

답변1

을 사용하여 현재 날짜를 저장 \DTMsavenow한 다음 \DTMfetchmonthDTMmonthname또는 해당 항목을 사용하여 이전(또는 다음) 달을 계산할 수 있습니다. a \lastmonth와 버전을 모두 추가했습니다 \nextmonth.

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

코드 출력

답변2

패키지 없이도 이 작업을 수행할 수 있습니다. 자신만의 \lastmonth매크로를 정의할 수 있습니다.

여기에 이미지 설명을 입력하세요

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

관련 정보