是否有一个包允许人们以以下方式处理日期:就像\date
显示今天的日期一样,我想要一个命令来将文档的日期定为从今天起 7 天。
另外,由于我想将其用作模板,所以我不想自己手动输入日期。可以吗?
答案1
请参阅 datenumber 和 advdate 包(以及 datetime 包以了解格式选项)。
编辑:添加了一些小例子,基本上是从 datenumber 文档中窃取的。
\documentclass{article}
\usepackage{datenumber}
\begin{document}
\setdatetoday
\addtocounter{datenumber}{7}
\setdatebynumber{\thedatenumber}
Today is \today, 7 days from now it's \datedate.
\end{document}
答案2
\documentclass{article}
\makeatletter
\def\dayinmonth#1{%
\ifcase#1 31\or28\or31\or30\or31\or30
\or31\or31\or30\or31\or30\or31\fi}
\newcommand\Today[1][0]{%
\advance\day by #1
\edef\DiM{\dayinmonth{\the\month}}
\ifnum\day>\DiM
\day=\numexpr \the\day-\DiM\relax
\advance\month\@ne
\fi
\today}
\makeatother
\begin{document}
\today -- \Today[30]
\end{document}
如果增加月份为 13,也可以测试年份
答案3
也许值得展示一个使用advdate
Villemoes 提到的包的示例,因为它有一个针对此问题的单一命令解决方案,\DayAfter[n]
它打印日期n天前的数据,\today
退出时保持不变。因此,对于未来 7 天的数据:
\documentclass{article}
\usepackage{advdate}
\begin{document}
\today\\
\DayAfter[7]\\
\today\\
\end{document}
给出
2011 年 8 月 2 日 2011 年 8 月 9 日 2011 年 8 月 2 日
该advdate
包还提供了单独的宏,\AdvanceDate
用于将的值更改\today
为未来几天,以及\SaveDate
保存\SetDate
和设置用于的当前值\today
。texdoc advdate
像往常一样,提供包中这些宏和其他宏的完整详细信息。