日期時間:不含年份的日期

日期時間:不含年份的日期

這個問題類似於設定不含年份的日期格式,但我無法推斷出答案。我想刪除日期中的年份,

\documentclass{article}
\usepackage[spanish,mexico]{babel}
\usepackage{datetime}
\begin{document}
I have: \today
I want: 15 de diciembre
I have: \longdate\today
I want: lunes 15 de diciembre
\end{document}

因為我使用 babel-spanish,在這種語言中就足夠了,但在其他語言中對其他人也有用。

答案1

datetime\newdateformat為這種情況提供了命令:

\documentclass{article}
\usepackage[spanish,mexico]{babel}
\usepackage{datetime}
\newdateformat{myshort}{%
    \THEDAY\ de \monthname[\THEMONTH]%
    }
\newdateformat{mylong}{%
    \dayofweekname{\THEDAY}{\THEMONTH}{\THEYEAR} 
    \THEDAY\ de \monthname[\THEMONTH]%
    }
\begin{document}
I have: \today

I now have: \myshort\today

I want: 15 de diciembre

I have: \longdate\today

I now have: \mylong\today

I want: lunes 15 de diciembre
\end{document}

在此輸入影像描述

答案2

我不會說任何西班牙語,但這純粹是圍繞\formatdate.下面我提供了\noyeardate從輸出中刪除年份的內容。此外,它也附加de在月份名稱前面:

在此輸入影像描述

\documentclass{article}
\usepackage[spanish,mexico]{babel}
\usepackage{datetime}

\makeatletter
\let\oldmonthname\monthname
\DeclareRobustCommand*{\longdate}{%
  \renewcommand*{\formatdate}[3]{%
    \ifshowdow\dayofweekname{##1}{##2}{##3} \fi
    \@day=##1\relax\@month=##2\relax\@year=##3\relax
    \ordinaldate{\the\@day}\ \monthname[\@month]}%, \the\@year}%
  \renewcommand{\monthname}{de \oldmonthname}%
}
\DeclareRobustCommand*{\noyeardate}{%
  \renewcommand*{\formatdate}[3]{%
    \@day=##1\relax\@month=##2\relax\@year=##2\relax
    \number\@day~de \monthname[\@month]}%
  }
\makeatother

\begin{document}

\noyeardate
I have: \today

I want: 15 de diciembre

\bigskip

I have: \longdate\today

I want: lunes 15 de diciembre

\end{document}

相關內容