0

私のクライアントは、mysqlに保存されている誕生日を使用して子供の年齢を表示することを望んでいます。ユーザーがこの日付を入力する方法をサイトが制限していないため、以前のコードはすべての形式で機能しませんでした。これが私がこれまでに持っているものですが、フォーマットをチェックする方法を理解するのに苦労しています。、、、、、、で誕生mm/dd/yyyy日があります。また、または爆発をチェックして使用するのに十分簡単な、などのさまざまなセパレータを使用します。mm/dd/yydd/mm/yyyydd/mm/yyAbbrev day, yyAbbrev day, yyyy.-

$birthday=//data from db
$DOB=$birthday;

if(strpos($DOB,'/')){
  list($month,$day,$year)=explode('/',$DOB);
  if(strlen($year)=='4'){
    //year is in Y format
    $age = (date("md", date("U", mktime(0, 0, 0, $month, $day, $year))) > date("md") ? ((date("Y")-$year)-1):(date("Y")-$year));
  }else{
    if(strlen($month)=='4'){
      //format is adjusted using ymd - $month is actually the year, the $day is month, the $year is the day
      $age = (date("md", date("U", mktime(0, 0, 0, $day, $year, $month))) > date("md") ? ((date("Y")-$month)-1):(date("Y") -$month));
    }else{
      //year is in y format
      $age = (date("md", date("U", mktime(0, 0, 0, $month, $day, $year))) > date("md") ? ((date("y")-$year)-1):(date("y")-$year));
    }
  }
}elseif(strpos($DOB,'-')){
  list($month,$day,$year)=explode('-',$DOB);
  if(strlen($year)=='4'){
    //year is in Y format
    $age = (date("md", date("U", mktime(0, 0, 0, $month, $day, $year))) > date("md") ? ((date("Y")-$year)-1):(date("Y")-$year));
  }else{
    if(strlen($month)=='4'){
      //format is adjusted using ymd - $month is actually the year, the $day is month, the $year is the day
      $age = (date("md", date("U", mktime(0, 0, 0, $day, $year, $month))) > date("md") ? ((date("Y")-$month)-1):(date("Y") -$month));
    }else{
      //year is in y format
      $age = (date("md", date("U", mktime(0, 0, 0, $month, $day, $year))) > date("md") ? ((date("y")-$year)-1):(date("y")- $year));
    }
  }
}elseif(strpos($DOB,'.')){
  list($month,$day,$year)=explode('.',$DOB);
  if(strlen($year)=='4'){
    //year is in Y format
    $age = (date("md", date("U", mktime(0, 0, 0, $month, $day, $year))) > date("md") ? ((date("Y")-$year)-1):(date("Y")-$year));
  }else{
    if(strlen($month)=='4'){
      //format is adjusted using ymd - $month is actually the year, the $day is month, the $year is the day
      $age = (date("md", date("U", mktime(0, 0, 0, $day, $year, $month))) > date("md") ? ((date("Y")-$month)-1):(date("Y") -$month));
    }else{
      //year is in y format
      $age = (date("md", date("U", mktime(0, 0, 0, $month, $day, $year))) > date("md") ? ((date("y")-$year)-1):(date("y")- $year));
    }
  }
}else{}

echo $age;

}
4

1 に答える 1