Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

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

by takshaka (Friar)
on May 03, 2000 at 03:22 UTC ( #10002=note: print w/replies, xml ) Need Help??


in reply to RE: Re: Calculating a persons age based on their birthday.
in thread Calculating a persons age based on their birthday.

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 :-)

Replies are listed 'Best First'.
RE: RE: RE: Re: Calculating a persons age based on their birthday.
by plaid (Chaplain) on May 03, 2000 at 04:06 UTC
    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?
        Someone who puts a tractor tire on a moped for fear of reinventing the wheel.
RE: RE: RE: Re: Calculating a persons age based on their birthday.
by kayos (Sexton) on May 03, 2000 at 17:19 UTC

    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.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://10002]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (1)
As of 2022-07-07 07:42 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?