http://www.perlmonks.org?node_id=10068


in reply to Calculating a persons age based on their birthday.

As far as I understand, you would like to know the number of full years the person is alive?
So, assuming you have only the number of day, we can do the following:
---
my $year = (localtime)[5]+1900;
my $fullyears=0;
$nod = xxxx; #number of days goes here...
while ($nod > 365)
{ if ( $year % 4) {$nod=$nod-365} else {$nod=$nod-366}; #check for the leap year.
$year--; $fullyears++;
};

print "$fullyears\n";
---
Rather simple but m.b. not so gracefull solution :) You see, you do not need any special modules.
  • Comment on Re: Calculating a persons age based on their birthday.

Replies are listed 'Best First'.
RE: Re: Calculating a persons age based on their birthday.
by t0mas (Priest) on May 03, 2000 at 14:18 UTC
    Sholdn't the
    if ($year % 4) {$nod=$nod-365} else {$nod=$nod-366}; #check for the le +ap year.
    be
    if ((($year % 4 == 0) && ($year % 100 != 0)) || ($year % 400) == 0) {$ +nod=$nod-365} else {$nod=$nod-366}; #check for the leap year.
    To handle Y2K (and others) correct... /t0mas
      Sorry - It should be
      if ((($year % 4 == 0) && ($year % 100 != 0)) || ($year % 400) == 0) {$ +nod=$nod-366} else {$nod=$nod-365}; #check for the leap year.
      365 and 366 swiched places....
        don't think so. The check might be simple. if $year % 4 gives any result except '0'
        then this is not a leap year. there is nothing else to check out, IMHO.