-1

Possible Duplicate:
How can I calculate the age of a person in year, month, days?

I want to calculate the age of a person given the date of birth and the current date in years, months and days relative to the current date.

For example:

>>> calculate_age(2008, 01, 01)
1 years, 0 months, 16 days
Community
  • 1
  • 1
Mohamed Reheem
  • 31
  • 1
  • 1
  • 5
  • Take a look at this Stack overflow post: http://stackoverflow.com/questions/676824/how-to-calculate-the-difference-between-two-dates-using-php – Manuel May 02 '12 at 09:22
  • 3
    There is several question in the Related Section to the right asking the very same and I am pretty sure you have been shown suggestions when you entered your question. Dont ask superfluous duplicates please. – Gordon May 02 '12 at 10:28

4 Answers4

32

You can use PHP date_diff http://php.net/manual/en/function.date-diff.php or http://www.php.net/manual/en/datetime.diff.php to achieve what you want and you can output it in any format you want using PHP date format

$interval = date_diff(date_create(), date_create('2008-01-01 10:30:00'));
echo $interval->format("You are  %Y Year, %M Months, %d Days, %H Hours, %i Minutes, %s Seconds Old");

echo

You are 04 Year, 04 Months, 1 Days, 00 Hours, 56 Minutes, 36 Seconds Old
Baba
  • 94,024
  • 28
  • 166
  • 217
3
<?php
date_default_timezone_set('Asia/Calcutta');

function findage($dob)
{
    $localtime = getdate();
    $today = $localtime['mday']."-".$localtime['mon']."-".$localtime['year'];
    $dob_a = explode("-", $dob);
    $today_a = explode("-", $today);
    $dob_d = $dob_a[0];$dob_m = $dob_a[1];$dob_y = $dob_a[2];
    $today_d = $today_a[0];$today_m = $today_a[1];$today_y = $today_a[2];
    $years = $today_y - $dob_y;
    $months = $today_m - $dob_m;
    if ($today_m.$today_d < $dob_m.$dob_d) 
    {
        $years--;
        $months = 12 + $today_m - $dob_m;
    }

    if ($today_d < $dob_d) 
    {
        $months--;
    }

    $firstMonths=array(1,3,5,7,8,10,12);
    $secondMonths=array(4,6,9,11);
    $thirdMonths=array(2);

    if($today_m - $dob_m == 1) 
    {
        if(in_array($dob_m, $firstMonths)) 
        {
            array_push($firstMonths, 0);
        }
        elseif(in_array($dob_m, $secondMonths)) 
        {
            array_push($secondMonths, 0);
        }elseif(in_array($dob_m, $thirdMonths)) 
        {
            array_push($thirdMonths, 0);
        }
    }
    echo "<br><br> Age is $years years $months months.";
}

findage("21-04-1969"); //put date in the dd-mm-yyyy format
?>
arun
  • 3,667
  • 3
  • 29
  • 54
1
<?php
$ageTime = mktime(0, 0, 0, 9, 9, 1919); // Get the person's birthday timestamp
$t = time(); // Store current time for consistency
$age = ($ageTime < 0) ? ( $t + ($ageTime * -1) ) : $t - $ageTime;
$year = 60 * 60 * 24 * 365;
$ageYears = $age / $year;

echo 'You are ' . floor($ageYears) . ' years old.';
?>

Source

Ahatius
  • 4,777
  • 11
  • 49
  • 79
0

Use datatime diff function

http://php.net/manual/en/datetime.diff.php

Yago Riveiro
  • 727
  • 13
  • 28