我想在我的文档中使用字符串表示日期,以后可以将其格式化为 ISO 或德语。
我看了一下isodate
datetime
,datetime2
最有希望的似乎是最新的,但月份没有显示在德语中。
然而在一份文件中
\usepackage{datetime2}
\DTMsetstyle{german}
\today
\DTMDisplaydate{2017}{3}{8}{-1}
\today
正确扩展为 8. März 2017,但\DTMDisplaydate{2017}{3}{8}{-1}
结果为 8. 3 2017,这是不正确的,它应该是 heute 8. 3. 2017 或 8. März 2017
答案1
根据预期输出,只需使用\DTMdisplaydate
而不是\DTMDisplaydate
:
2017 年 3 月 9 日
2017 年 3 月 8 日
\documentclass{article}
\usepackage[ngerman]{babel}% ...or load \usepackage[ngerman]{datetime2} below
\usepackage{datetime2}
\DTMsetstyle{german}
\begin{document}
\today
\DTMdisplaydate{2017}{3}{8}{-1}
\end{document}
答案2
为了datetime2-german
,\DTMDisplaydate
应该与 相同\DTMdisplaydate
,但我犯了一个错误(很可能是从另一个包含小写月份的语言文件中复制粘贴的)。最简单的方法是使用 Werner 的解决方案(只需使用\DTMdisplaydate
)。如果您需要\DTMDisplaydate
(例如,您可能要切换语言),请等待版本 1.1 2017-03-09(我刚刚上传)或重新定义样式:
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage[useregional]{datetime2}
\DTMrenewdatestyle
{german}%
{%
\renewcommand*\DTMdisplaydate[4]{%
\DTMifbool{german}{showdayofmonth}%
{\DTMgermanordinal{##3}\DTMgermandaymonthsep}%
{}%
\DTMgermanmonthname{##2}%
\DTMifbool{german}{showyear}%
{%
\DTMgermanmonthyearsep
\number##1 % space intended
}%
{}%
}%
\renewcommand{\DTMDisplaydate}{\DTMdisplaydate}%
}
\begin{document}
\today.
\DTMDisplaydate{2017}{3}{8}{-1}
\end{document}