PHPの勉強に「10 Life-Saving PHP Snippets」で紹介されているコードを読んでみる。
■Calculate age using date of birth(生年月日から年齢を計算する)
ソースコードは次のようなもの。
function age($date){
$year_diff = '';
$time = strtotime($date);
if(FALSE === $time){
return '';
}
$date = date('Y-m-d', $time);
list($year,$month,$day) = explode("-",$date);
$year_diff = date("Y") - $year;
$month_diff = date("m") - $month;
$day_diff = date("d") - $day;
if ($day_diff < 0 || $month_diff < 0) $year_diff--;
return $year_diff;
}
■使用例
echo 'I am '.age('1982-01-12').' years old';
■解説
$time = strtotime($date);
if(FALSE === $time){
return '';
}
strtotime()関数で引数をUnix タイムスタンプに変換する。
変換に失敗した時は、空文字を返す。
以降のコードでは、がんばって年齢を計算していますが、間違いがあります。
このコードでは正しい年齢を求めることはできません。
■一言
こんな感じでいいんじゃないかな。
function age($date){
$time = strtotime($date);
if(FALSE === $time){
return '';
}
return intval((date('Ymd') - date('Ymd', $time)) / 10000);
}
「10 Life-Saving PHP Snippets」で勉強するのはやめることにする。