PHPの勉強に「10 Life-Saving PHP Snippets」で紹介されているコードを読んでみる(Calculate age using date of birth)

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」で勉強するのはやめることにする。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください