go ahead... be a heretic PerlMonks

RE: Re: Calculating a persons age based on their birthday.

by artful (Initiate)
 on May 03, 2000 at 03:18 UTC ( #9999=note: print w/replies, xml ) Need Help??

I was just looking for the number of years alive. So like when their birthday rolls around I can say happy birthday your 10 years old. Or hey everyone John Doe is 10 years old today.
• Comment on RE: Re: Calculating a persons age based on their birthday.

Replies are listed 'Best First'.
RE: RE: Re: Calculating a persons age based on their birthday.
by takshaka (Friar) on May 03, 2000 at 03:22 UTC
Date::Calc (or, heaven forbid, Date::Manip) is probably overkill since you only want age in years. All you really want to know is whether the birthday has passed this year.
```sub age {
# Assuming \$birth_month is 0..11
my (\$birth_day, \$birth_month, \$birth_year) = @_;

my (\$day, \$month, \$year) = (localtime)[3..5];
\$year += 1900;

my \$age = \$year - \$birth_year;
\$age-- unless sprintf("%02d%02d", \$month, \$day)
>= sprintf("%02d%02d", \$birth_month, \$birth_day);
return \$age;
}
Of course, if you're only using this on a person's birthday, all you need to do is subtract their birth year from the current year :-)
The above code is what I'd recommend using, as it's simple enough that the use of modules isn't really needed.. Then again I'm not a module-nazi:) One caveat about this code though: The value returned to \$month in the call to localtime is 0 based, i.e. 0..11. I'm not sure if this might contrast the format of the \$birth_month that is being passed in.. if so, just change the appropriate line to read
```\$age-- unless sprintf("%02d%02d", \$month+1, \$day)
And just what is a module nazi?

I don't think this code would work if the person was born before 1970.

T.R. Fullhart, kayos@kayos.org

It even works if someone were born before 1900: print age(8, 9, 1866), "\n"; Result: 133. See man localtime for details.

Create A New User
Node Status?
node history
Node Type: note [id://9999]
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (3)
As of 2017-08-22 05:58 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
Who is your favorite scientist and why?

Results (329 votes). Check out past polls.

Notices?