誕生日から自動的に年齢を計算したい

結論から書くとこう。

< ?
$birthday = '1993年3月23日';
$now = date('Ymd');
preg_match( "/([0-9]*)年([0-9]*)月([0-9]*)日/", $birthday, $data );
$birth = sprintf( "%04.4d%02.2d%02.2d", $data[1], $data[2], $data[3]);

$age = $now - $birth;
$age = $age/10000;
$age = floor($age);

echo $age;
?>


1.生年月日を取得
2.現在の日付をyyyyMMddで取得
3.生年月日から、数字のみを再セット
4.年齢 = 小数点削除(現在の日付 - 生年月日 / 10000)

で出来ます。

が、、、

PHPで書く時に
$age = floor(($now - $birth)/10000);
と書いたら、2012って数字が帰ってきた。
これは何でだ?


で、年齢の計算式だけど
(現在の日付-生年月日)/10000の小数点以下切捨て。
一個ずつ書くと
20130328 - 19930323 = 200005
つまり、誕生日から5日経過してるわけですね。

200005 / 10000 = 20.0005
で、10000で割ることで、年月日の月日の部分を小数点以下にできます。

floor(20.0005) = 20
最後に、小数点以下を切り捨てます

これで年齢が出せます。
うるう年でも大丈夫ですね^^



[PR]

by hiro__neko | 2013-03-28 15:55 | PGじゃない人間の備忘録  

<< Buttonタグでsubmit... 年月日を yyyyMMdd に... >>