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