誕生日から年齢を求める方法を探していたら、
面白い方法があった。
echo (int)((20070823 - 19850101)/10000);
つまり、現在の日時から、誕生日を引き、10000で割って整数値だけを使用する。
PHPでは以下のようにした。
$birthDateTime = new DateTime("1982-04-20"); $age = (int)((date("Ymd")-$birthDateTime->format("Ymd"))/10000));
VisualBasic.NET(VB.NET)では以下のようにした。(2014/06/19 追記)
Dim birthDate As New Date("1982-04-20") Dim age As Integer = Integer.Parse(Date.Today.ToString("yyyyMMdd")) - Integer.Parse(birthDate.ToString("yyyyMMdd"))) / 10000
しかし、面白い計算式だと思う。
西暦以外の、月と日はただの数値として計算しているっぽい。
素晴らしい。
だが、参考サイトとか色々見ると、この計算式は、計算処理が遅い場合もあるし、
なにより、業務用途によっては、使えないらしい。
まぁ、年齢の誤差でとんでもないことが起きるようなシステムでなければ、気にする必要は無さそうだ。
参考
http://itpro.nikkeibp.co.jp/article/Watcher/20070822/280097/