生年月日から年齢を計算する簡単な計算式

生年月日から年齢を計算する簡単な計算式」という記事。感心しました。なるほどね。

PHPPerlJava と 3 つの言語で紹介しておきながら書かれているのは標準出力と型キャストだけというのが、なんともさみしいので、きちんと「計算」部分を書いてみた。

ということで、まずは perl

#!/usr/bin/perl
use strict;

my $byear = 1977;
my $bmon  = 11;
my $bday  = 3;
my ($year,$mon, $day) = (localtime(time))[5,4,3];

my $now   = sprintf( "%04d%02d%02d", $year+1900, $mon+1, $day );
my $birth = sprintf( "%04d%02d%02d", $byear, $bmon, $bday );

print int( ($now - $birth) / 10000 );

続いて php

<?php
$byear = 1977;
$bmon  = 11;
$bday  = 3;
$now = date('Ymd');
$birth = sprintf( '%s%02d%02d', $byear, $bmon, $bday );

echo (int)( ($now - $birth) / 10000 );
echo "\n";
?>

件のページは「サーバ管理者日記」らしいので、最後にシェルスクリプト

#!/bin/sh

byear=1977
bmon=11
bday=3
now=`date '+%Y%m%d'`

if [ ${bmon} -lt 10 ]; then
   bmon='0'${bmon}
fi
if [ ${bday} -lt 10 ]; then
   bday='0'${bday}
fi

echo `expr \( ${now} - ${byear}${bmon}${bday} \) / 10000`

ここまで書かれたら正直うっとおしいですね。しかも、書いた本人も思ったほど面白くなかった。