是否可以使用 来显示日期范围datetime2
?isodate
会
isodate
自动计算正确的差异并显示正确的范围。 但是,datetime2
显示正确。 我希望日期采用美国英语,例如“2020 年 11 月 1 日”。 这是通过 实现的,datetime2
但不是使用 实现的isodate
。
有什么建议么?
以下是 MWE:
\documentclass{scrartcl}
\usepackage[ngerman, english]{babel}
\usepackage{ifluatex}
\usepackage[calc, useregional, de-DE, en-US]{datetime2}
\usepackage[ngerman, english, cleanlook]{isodate}
\begin{document}
\section{English}
\DTMdate{2020-11-1}
\daterange{1.11.2020}{5.11.2020}
\daterange{1.11.2020}{5.12.2020}
\section{German}
\selectlanguage{ngerman}
\DTMsetstyle{de-DE}
\DTMdate{2020-11-1}
\daterange{1.11.2020}{5.11.2020}
\daterange{1.11.2020}{5.12.2020}
\end{document}
答案1
同时,我编写了一个宏来显示上述日期。它只适用于德语和非德语(预计为英语)。
\documentclass{scrartcl}
\usepackage[ngerman, english]{babel}
\usepackage{ifluatex}
\ifluatex
\usepackage{fontspec}
\fi
\usepackage[calc, useregional]{datetime2}
\usepackage{xstring}
\usepackage{translations}
\newcommand{\myDisplayDate}[1]{%
\StrBefore{#1}{.}[\myDay]%
\StrBetween[1,2]{#1}{.}{.}[\myMonth]%
\StrBehind[2]{#1}{.}[\myYear]%
\DTMdisplaydate{\myYear}{\myMonth}{\myDay}{-1}%
}
newcommand{\myDisplayDateRange}[2]{%
\StrBefore{#1}{.}[\myDayOne]%
\StrBetween[1,2]{#1}{.}{.}[\myMonthOne]%
\StrBehind[2]{#1}{.}[\myYearOne]%
\StrBefore{#2}{.}[\myDayTwo]%
\StrBetween[1,2]{#2}{.}{.}[\myMonthTwo]%
\StrBehind[2]{#2}{.}[\myYearTwo]%
%
\DTMsavenoparsedate{myDtOne}{\myYearOne}{\myMonthOne}{\myDayOne}{-1}%
\DTMsavenoparsedate{myDtTwo}{\myYearTwo}{\myMonthTwo}{\myDayTwo}{-1}%
%
\IfStrEq{\DTMfetchyear{myDtOne}}{\DTMfetchyear{myDtTwo}}{%
\IfStrEq{\DTMfetchmonth{myDtOne}}{\DTMfetchmonth{myDtTwo}}{%
\IfStrEq{\DTMfetchday{myDtOne}}{\DTMfetchday{myDtTwo}}{%
\DTMusedate{myDtOne}%
}{%
\ifcurrentbaselanguage{German}{%
\DTMfetchday{myDtOne}.\ bis\ \DTMfetchday{myDtTwo}.\ \DTMmonthname{\DTMfetchmonth{myDtOne}}
}{%
\DTMmonthname{\DTMfetchmonth{myDtOne}}\ \DTMfetchday{myDtOne}\
to\ \DTMfetchday{myDtTwo},
}%
\DTMfetchyear{myDtOne}%
}%
}{%
\ifcurrentbaselanguage{German}{%
\DTMfetchday{myDtOne}.\ \DTMmonthname{\DTMfetchmonth{myDtOne}}\ bis
\DTMfetchday{myDtTwo}.\ \DTMmonthname{\DTMfetchmonth{myDtTwo}}
}{%
\DTMmonthname{\DTMfetchmonth{myDtOne}}\ \DTMfetchday{myDtOne}\ to
\DTMmonthname{\DTMfetchmonth{myDtTwo}}\ \DTMfetchday{myDtTwo},
}%
\DTMfetchyear{myDtOne}%
}%
}{%
\DTMusedate{myDtOne}\ \ifcurrentbaselanguage{German}{bis}{to}\ \DTMusedate{myDtTwo}%
}%
}
\begin{document}
\section{English}
---\myDisplayDateRange{15.11.2020}{15.11.2020}---
---\myDisplayDateRange{5.11.2020}{7.11.2020}---
---\myDisplayDateRange{15.11.2020}{7.12.2020}---
---\myDisplayDateRange{15.11.2019}{15.11.2020}---
---\myDisplayDate{5.3.1980}---
\section{German}
\selectlanguage{ngerman}
---\myDisplayDateRange{15.11.2020}{15.11.2020}---
---\myDisplayDateRange{5.11.2020}{7.11.2020}---
---\myDisplayDateRange{15.11.2020}{7.12.2020}---
---\myDisplayDateRange{15.11.2019}{15.11.2020}---
---\myDisplayDate{5.3.1980}---
\end{document}