I'd like to use datetime's \monthname as part of a command; consider this snippet of command line pdflatex use:

$ pdflatex
This is pdfTeX, Version 3.1415926-1.40.11 (TeX Live 2010)
 restricted \write18 enabled.
entering extended mode
LaTeX2e <2009/09/24>
Babel <v3.8l> and hyphenation patterns for english, dumylang, nohyphenation, lo

Document Class: article 2007/10/19 v1.4h Standard LaTeX document class

No configuration file fmtcount.cfg found.

*\newcommand\someDateStr{\getdateday{someDate} \monthname[\getdatemonth{someDate}] \getdateyear{someDate}}

30 \monthname[05] 2011


So, it looks like in the construct \monthname[\getdatemonth{someDate}], Latex will expand only \getdatemonth{someDate}, but not the \monthname part; I'm suspecting it has something to do with the square brackets as arguments, because if I try to use edef instead, I get an error:

*\edef\someDateStr{\getdateday{someDate} \monthname[\getdatemonth{someDate}] \getdateyear{someDate}}
! Argument of \reserved@a has an extra }.
<inserted text> 
<*> ...atemonth{someDate}] \getdateyear{someDate}}


So, the question is: how can I use \monthname[\getdatemonth{someDate}] as a part of a newcommand, such that it results with (in this case) "May"?

Thanks in advance for any responses,

1 Answer 1


The main problem with datetime is that it is oriented towards printing dates rather than manipulating them.

A "completely expandable" version would be

\def\xgetdateday#1{\expandafter\expandafter\expandafter\xget@I\csname date@#1\endcsname}
\def\xgetdatemonth#1{\expandafter\expandafter\expandafter\xget@II\csname date@#1\endcsname}
\def\xgetdateyear#1{\expandafter\expandafter\expandafter\xget@III\csname date@#1\endcsname}
\or January%
\or February%
\or March%
\or April%
\or May%
\or June%
\or July%
\or August%
\or September%
\or October%
\or November%
\or December%

\typeout{\xgetdateday{somedate} \xgetdatemonthname{somedate} \xgetdateyear{somedate}}
  • Uh, oh :) - Thanks for that, @egreg :) I simply wanted to use the \monthname in a \hypersetup for a PDF title, and it was crashing the same way \typeout did, which is why I formulated the OP in that way... Nice to know that this entails complications - and how to get around them :) Cheers!
    – sdaau
    May 30, 2011 at 19:41
  • 1
    Is there maybe another package that would allow date manipulation? I have the same kind of issue inserting dynamic dates into a PDF table of contents.
    – raphink
    Sep 13, 2012 at 12:06
  • @ℝaphink No package that I know of. Maybe you can ask a question stating more precisely what you need.
    – egreg
    Sep 13, 2012 at 12:47

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .