自动计算年龄

自动计算年龄

如何在 LaTeX 中计算编译时我的年龄?

就像是:

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

将会非常棒。

答案1

datetime您可以使用该包并进行一些简单的计算轻松排版您的年龄。

\documentclass{article}
\usepackage{datenumber,fp}
\begin{document}
\newcounter{dateone}%
\newcounter{datetwo}%

\setmydatenumber{dateone}{1990}{01}{01}%
\setmydatenumber{datetwo}{\the\year}{\the\month}{\the\day}%
\FPsub\result{\thedatetwo}{\thedateone}
\FPdiv\myage{\result}{365.2425}
\myage

\end{document}

您可以正确截断数字,即,如果您 21.6 岁,它将为您提供 21(参见编辑),方法是将代码的最后一行更改为如下形式:

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

另请参阅邮政

编辑

由于年龄的四舍五入引起了一些评论,我查阅了年龄的法律定义(这可能适合我的例子)。基于此,我将代码从 改为FProundFPtrunc感谢所有发表评论的人。我还将一年中的天数改为 365.2425,以稍微提高边缘情况的准确性!

答案2

提出的解决方案似乎并不完全准确;也许更直接的方法是(用实际数字替换 DDMMYYYY)

\usepackage{ifthen}
\newcounter{myage}
\setcounter{myage}{\the\year}
\addtocounter{myage}{-YYYY}
\ifthenelse{\the\month<MM}{\addtocounter{myage}{-1}}{}
\ifthenelse{\the\month=MM}{
  \ifthenelse{\the\day < DD}{\addtocounter{myage}{-1}}{}
}{}

然后\themyage{}可以用来显示你的年龄。

答案3

我发现这个效果非常好。

%
\catcode`@=11
\newcount\@tempnuma
\def\@null{null}
\def\age#1{\@age#1\@null}
\def\@age#1/#2/#3\@null{%
        \@tempnuma\year
        \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 
        %\number\@tempnuma
    \ifnum#1 > \month   %anniv month is later in year
            \advance\@tempnuma by -1\relax
    \else
            \ifnum#1 = \month   %anniv month is this month
                \ifnum#2 > \day %anniv day is later in month
                    \advance\@tempnuma by -1\relax
                \fi\relax
            \fi\relax
    \fi\relax
\number\@tempnuma}
\catcode`@=12
%

用法是:\age{6/25/84} 可得出正确的年龄(以年为单位),这正是人们通常想要的。稍加调整,即可得出月份和日期。

答案4

\usepackage{datenumber, fp}

\newcounter{birthday}
\setmydatenumber{birthday}{1995}{09}{06} % my birthday
\setdatetoday
\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.

相关内容