How can I calculate my age at compile-time in LaTeX?

Something like:

I'm \myage{day}{month}{year} years old.

would be most awesome.

  • 1
    This could be done using the datenumber package. The number of days would be easy. If you want to get "You are YY years, MM month and DD days old" it is more tricky. See also this somehow related question. Feb 18, 2011 at 16:52

4 Answers 4


You can typeset your age easily using the datetime package and doing some simple calculations.




You can truncate the figure correctly, i.e., if you 21.6 years old it will give you 21 (see edit), by changing the last line of the code as follows:

\FPround\myage{\myage}{0}\myage\ years old

See also this post.


Since the rounding of the age elicited a few comments I looked up the legal definition of age (which was probably appropriate in my example). Based on this I have changed the code from FPround to FPtrunc. Thanks to all that made comments. I also changed the days in the year to 365.2425 to increase the accuracy a bit for marginal cases!

  • 4
    Most people call themselves 21 years old until their 22nd birthday. So \FPtrunc\myage{\myage}{0} might be more conventional. Feb 18, 2011 at 18:10
  • 1
    Simon & Garfunkel have a song that goes "I was 21 years when I wrote this song. I'm 22 now but I won't be for long. Time hurries on, and the leaves that are green turn to brown." Feb 18, 2011 at 18:11
  • @Matthew Good point, but given that most people around here are mathematically inclined I will leave the choice up to them. Feb 18, 2011 at 18:40
  • 3
    Not to be too pedantic, but the average year has 365.2425 days in it, not 365.25—but I guess it doesn't matter unless you were born before 1900.
    – Andrew
    Feb 18, 2011 at 22:19
  • 1
    @Hendrik I know what you mean. Where I grew I had to jump straight from 18.01 to 21 many a times! Feb 21, 2011 at 17:24

The proposed solution does not seem to be completely accurate ; a perhaps more straightforward way of doing this is (replace DDMMYYYY by actual figures)

  \ifthenelse{\the\day < DD}{\addtocounter{myage}{-1}}{}

then \themyage{} can be used to show your age.

  • Welcome to TeX.sx! You can highlight code by selecting it and pressing Ctrl + K. Jan 6, 2012 at 16:19
  • Works well and is to the point. I couldn't make the accepted answer work because I need to compute the age before the beginning of the document and got an error.
    – Shautieh
    Mar 20, 2017 at 7:17

I have found that this works very nicely.

        \advance\@tempnuma by -1900 % Comment this line out for dates of
                                    % the form 2/24/1967 - last 2 digits of yr.
        \advance\@tempnuma by -#3\relax  % gives # of years 
    \ifnum#1 > \month   %anniv month is later in year
            \advance\@tempnuma by -1\relax
            \ifnum#1 = \month   %anniv month is this month
                \ifnum#2 > \day %anniv day is later in month
                    \advance\@tempnuma by -1\relax

Usage is: \age{6/25/84} yields the correct age in years, which is what one usually wants. With some twiddling, one could get the months and days.

\usepackage{datenumber, fp}

\setmydatenumber{birthday}{1995}{09}{06} % my birthday
\addtocounter{datenumber}{-\thebirthday} % today - birthday
\setdatebynumber{\thedatenumber} % get date
\FPsub\result{\thedateyear}{\thestartyear} % date year - start year (see datenumber lib doc)
\FPtrunc\myage{\result}{0} %truncate result

I am \myage years old.

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.