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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.