วันพฤหัสบดีที่ 22 พฤษภาคม พ.ศ. 2557

PHP แสดงข้อมูลจาก วันเกิด (วัน เดือน ปี) เป็นอายุ กี่ปี กี่เดือน กี่วัน

เป็น script php การแปลงวันเกิด ให้แสดงผลในรูแบบ อายุกี่ปี กี่เดือน กี่วัน จากการทดสอบก็ค่อนข้างจะใช้ได้ครับ ไม่มีคำสั่งที่ซับซ้อนที่ยุกยาก นอกจากบวก ลบ เลขธรรมดา  จึงเป็น สคริป (script) การแปลงวันที่ ที่เป็นวันเกิด เป็นวันเดือนปี อย่างง่าย ที่สามารถนำไปทดลอง ใช้งานได้ครับ

ตัวอย่างการใช้คำสั่ง
echo show_year_month_day_for_age('2003-05-01');

ผลลัพธ์

11 ปี 0 เดือน 21 วัน

จากวันที่ด้านบนจะนับเป็น 21 วันเพราะวันที่ 22 ยังไม่ผ่านตามคำสั่งนี้เลยยังไม่นับวันที่ 22 ด้วย ทำให้ผลลัพธ์ที่ได้เป็น 21 วัน

ตัวอย่างคำสั่ง

function show_year_month_day_for_age($pbday)
{
$dinm = array(0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
$today = date("Y-m-d");
list($byear , $bmonth , $bday) = explode("-" , $pbday);
list($tyear , $tmonth , $tday) = explode("-" , $today);
$result_y = $today-$byear;
$result_m = $tmonth-$bmonth;
if($result_m น้อยกว่า 0) {
$result_y = $result_y-1;
$result_m = 12-abs($result_m);
}
$result_d = $tday-$bday;
if($result_d น้อยกว่า 0) {
if($result_m!=0) {
$result_m = $result_m-1;
} else {
$result_y = $result_y-1;
$result_m = 12-1;
}
$d = $dinm[$tmonth-1];
if($tmonth==2 && ($tyear%4)==0) { //ปีที่มี ก.พ. 29 วัน
$d = $d+1;
}
$result_d = $d-abs($result_d);
}
$age = $result_y." ปี ".$result_m." เดือน ".$result_d." วัน";
 
return($age);
}

จากตัวอย่างคำสั่งด้านบนอาจจะมีผิดพลาดได้ครับแต่เท่าที่ลองทดสอบยังไม่เจอข้อผิดพลาด หากนำไปใช้อาจจะปรับให้มีความสมบุรณ์มากขึ้นไปอีกครับ


ปล.

คำว่า  น้อยกว่า  คือเครืองหมาย น้อยกว่า ใส่ไม่ได้ระบบบอกว่าเป็น รหัส html ไม่ผ่าน เลยต้องเพิ่มเป็นข้อความเอาครับ