Calculate years from date

后端 未结 4 768
迷失自我
迷失自我 2020-12-15 22:36

I\'m looking for a function that calculates years from a date in format: 0000-00-00. Found this function, but it wont work.

// Calculate the age from a given         


        
相关标签:
4条回答
  • 2020-12-15 23:06

    A single line function can work here

    function calculateAge($dob) {
        return floor((time() - strtotime($dob)) / 31556926);
    }
    

    To calculate Age

     $age = calculateAge('1990-07-10');
    
    0 讨论(0)
  • 2020-12-15 23:15

    You need to return $yearDiff, I think.

    0 讨论(0)
  • 2020-12-15 23:23

    An alternative way to do this is with PHP's DateTime class which is new as of PHP 5.2:

    $birthdate = new DateTime("1986-06-18");
    $today     = new DateTime();
    $interval  = $today->diff($birthdate);
    echo $interval->format('%y years');
    

    See it in action

    0 讨论(0)
  • 2020-12-15 23:25

    Your code doesn't work because the function is not returning anything to print.

    As far as algorithms go, how about this:

    function getAge($then) {
        $then_ts = strtotime($then);
        $then_year = date('Y', $then_ts);
        $age = date('Y') - $then_year;
        if(strtotime('+' . $age . ' years', $then_ts) > time()) $age--;
        return $age;
    }
    print getAge('1990-04-04'); // 19
    print getAge('1990-08-04'); // 18, birthday hasn't happened yet
    

    This is the same algorithm (just in PHP) as the accepted answer in this question.

    A shorter way of doing it:

    function getAge($then) {
        $then = date('Ymd', strtotime($then));
        $diff = date('Ymd') - $then;
        return substr($diff, 0, -4);
    }
    
    0 讨论(0)
提交回复
热议问题