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

พารามิเตอร์จะมีสองตัว ตัวแรกให้ส่งวันเกิดเข้าไป ตัวที่สองวันปัจจุบัน โดยพารามิเตอร์ทั้งสองตัว ต้องเป็น timestamp แต่ไม่ต้องกังวลนะครับ ในโค้ดผมได้แสดงตัวอย่างไว้ให้ดูแล้วด้วย ท่านเห็นปุ๊บก็เข้าใจปั๊บ ผมใช้ฟังก์ชั่น strtotime แปลงวันเกิดให้เป็น timestamp

<?php
function timespan($seconds = 1, $time = '')
{
	if ( ! is_numeric($seconds))
	{
		$seconds = 1;
	}
 
	if ( ! is_numeric($time))
	{
		$time = time();
	}
 
	if ($time <= $seconds)
	{
		$seconds = 1;
	}
	else
	{
		$seconds = $time - $seconds;
	}
 
	$str = '';
	$years = floor($seconds / 31536000);
 
	if ($years > 0)
	{	
		$str .= $years.' ปี, ';
	}	
 
	$seconds -= $years * 31536000;
	$months = floor($seconds / 2628000);
 
	if ($years > 0 OR $months > 0)
	{
		if ($months > 0)
		{	
			$str .= $months.' เดือน, ';
		}	
 
		$seconds -= $months * 2628000;
	}
 
	$weeks = floor($seconds / 604800);
 
	if ($years > 0 OR $months > 0 OR $weeks > 0)
	{
		if ($weeks > 0)
		{	
			$str .= $weeks.' สัปดาห์, ';
		}
 
		$seconds -= $weeks * 604800;
	}			
 
	$days = floor($seconds / 86400);
 
	if ($months > 0 OR $weeks > 0 OR $days > 0)
	{
		if ($days > 0)
		{	
			$str .= $days.' วัน, ';
		}
 
		$seconds -= $days * 86400;
	}
 
	$hours = floor($seconds / 3600);
 
	if ($days > 0 OR $hours > 0)
	{
		if ($hours > 0)
		{
			$str .= $hours.' ชั่วโมง, ';
		}
 
		$seconds -= $hours * 3600;
	}
 
	$minutes = floor($seconds / 60);
 
	if ($days > 0 OR $hours > 0 OR $minutes > 0)
	{
		if ($minutes > 0)
		{	
			$str .= $minutes.' นาที, ';
		}
 
		$seconds -= $minutes * 60;
	}
 
	if ($str == '')
	{
		$str .= $seconds.' วินาที';
	}
 
	return substr(trim($str), 0, -1);
}
 
 
// ตัวอย่างการใช้งาน
$birthdate = strtotime( '1973-11-13' );
$today = time();
 
echo timespan( $birthdate , $today );
//36 ปี, 2 เดือน, 3 สัปดาห์, 2 วัน, 4 ชั่วโมง, 51 นาที
?>

เห็นมั้ยครับการใช้ PHP คำนวณอายุนั้นไม่ยากเลย