继续主题:将(n)天添加到变量 date 中
但我想使用 ShootDate 之类的变量和其他格式:
2019 年 10 月 26 日 + 15
2019 年 11 月 14 日 + 30
2020 年 5 月 3 日 + 45
请帮助宏。
非常感谢
最少编码:
\documentclass[10p]{article}
\usepackage[calc,datesep=/]{datetime2}
\DTMsavedate{ShootDate}{2016-05-20}
\newcommand{\PaymentTurnAroundDays}{45}
\newcount\daycount
\newcommand{\dueDate}[1]{%
\DTMsaveddateoffsettojulianday{ShootDate}{#1}\daycount
\DTMsavejulianday{ShootDate}{\number\daycount}
\DTMusedate{ShootDate}
}
\begin{document}
Payment will be made by \dueDate{\PaymentTurnAroundDays} (within {\PaymentTurnAroundDays} of the day of the event(s)).
26/10/2019 + 15 day = ?
14/11/2019 + 30 day = ?
05/03/2020 + 45 day = ?
\end{document}
答案1
最好猜测一下你想要什么:
\documentclass[10pt]{article}
\usepackage[calc,datesep=/]{datetime2}
\newcount\daycount
\newcommand{\DueDate}[2]{%
\DTMsavedate{ShootDate}{#1}%
\DTMsaveddateoffsettojulianday{ShootDate}{#2}\daycount
\DTMsavejulianday{ShootDate}{\number\daycount}%
\DTMusedate{ShootDate}%
}
\begin{document}
26/10/2019 + 15 day = \DueDate{2019-10-26}{15}
14/11/2019 + 30 day = \DueDate{2019-11-14}{30}
05/03/2020 + 45 day = \DueDate{2020-03-05}{45}
\end{document}
请注意,这不包括任何变量。
带有正斜杠的反转日期的快速版本。
请注意,我不推荐这样做。我会坚持使用 ISO 格式进行输入。
买者自负 ...
\documentclass[10pt]{article}
\usepackage[calc,datesep=/]{datetime2}
\newcount\daycount
\makeatletter
\newcommand{\DueDate}[2]{%
\edef\tempa{\expandafter\date@aux#1\@nil}%
\DTMsavedate{ShootDate}{\tempa}%
\DTMsaveddateoffsettojulianday{ShootDate}{#2}\daycount
\DTMsavejulianday{ShootDate}{\number\daycount}%
\DTMusedate{ShootDate}%
}
\newcommand*\dateaux{}
\def\date@aux#1/#2/#3\@nil{#3-#2-#1}
\makeatother
\begin{document}
26/10/2019 + 15 day = \DueDate{26/10/2019}{15}
14/11/2019 + 30 day = \DueDate{14/11/2019}{30}
05/03/2020 + 45 day = \DueDate{05/03/2020}{45}
\end{document}
产生与上面相同的输出。请注意,如果您输入的内容与指定格式不匹配,您将收到无意义的错误消息。