誕生日から現在の年齢を算出する

誕生日を指定すると、現時点の年齢を算出し、返します。

サブルーチン名

GetAge()

引数

誕生日となる日付を西暦、月、日に分けて指定します。

  1. 西暦(1900 ~ 2023)
  2. 月(1 ~ 12)
  3. 日(1 ~ 31)

戻値

  1. 現時点の年齢(数え年ではありません。)

使い方

今日が西暦2008年12月8日とします。誕生日が 西暦1970年6月30日として現時点での年齢を算出する場合には、

my $age = &GetAge(1970, 6, 30);

とします。$age には、38 が与えられます。

指定する誕生日は、西暦1900年1月1日から、現在の日付けまでです。もし、誕生日に未来の日付を指定した場合には、マイナスの値が返ってきます。また、不適切な引数を与えると、何も返りません。

サブルーチン

sub GetAge {
    my($year, $mon, $day) = @_;
    unless($year && $mon && $day) {return;}
    if($year < 1900 || $year > 2023) {return;}
    if($mon < 1 || $mon > 12) {return;}
    if($day < 1 || $day > 31) {return;}
    my($s, $m, $h, $D, $M, $Y) = localtime(time);
    my $age = $Y + 1900 - $year;
    if($M+1 < $mon || ($M+1 == $mon && $D < $day) ) {
        $age --;
    }
    return $age;
 }