datetime2 - 显示日期范围

datetime2 - 显示日期范围

是否可以使用 来显示日期范围datetime2isodateisodate自动计算正确的差异并显示正确的范围。 但是,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}

结果如下:在此处输入图片描述

相关内容