Php 根据出生日期计算年龄

Php 根据出生日期计算年龄,php,mysql,date,Php,Mysql,Date,我有一个sql用户表,每个用户都有出生日期。我只想将他们的出生日期转换为他们的年龄,例如日期:1999年3月15日年龄:14和2014年3月15日将更改为年龄:15 我想在这里显示用户的日期: if(isset($_GET['id'])) { $id = intval($_GET['id']); $dnn = mysql_fetch_array($dn); $dn = mysql_query('select username, email, skype, avatar,

我有一个sql用户表,每个用户都有出生日期。我只想将他们的出生日期转换为他们的年龄,例如日期:1999年3月15日年龄:14和2014年3月15日将更改为年龄:15

我想在这里显示用户的日期:

if(isset($_GET['id']))
{
    $id = intval($_GET['id']);
    $dnn = mysql_fetch_array($dn);
    $dn = mysql_query('select username, email, skype, avatar, ' .
        'date, signup_date, gender from users where id="'.$id.'"');
    $dnn = mysql_fetch_array($dn);
    echo "{$dnn['date']}";
}

用于日期/月/年格式的生日日期

它将在6月4日输出正确的年龄,即14岁。

PHP>=5.3.0 面向对象 $from=新日期时间'1970-02-01'; $to=新日期时间“今天”; echo$from->diff$to->y; 程序性 回音日期创建'1970-02-01',日期创建'today'->y; 功能:

MySQL>=5.0.0 选择年份'1970-02-01',CURDATE作为年龄 函数:,

声明@dateOfBirth date 选择@dateOfBirth='2000-01-01'


选择datediffYEAR、@dateOfBirth、getdate as Age

多亏了coffeecupweb,才从网上获得了这个脚本

<?php
/**
 * Simple PHP age Calculator
 * 
 * Calculate and returns age based on the date provided by the user.
 * @param   date of birth('Format:yyyy-mm-dd').
 * @return  age based on date of birth
 */
function ageCalculator($dob){
    if(!empty($dob)){
        $birthdate = new DateTime($dob);
        $today   = new DateTime('today');
        $age = $birthdate->diff($today)->y;
        return $age;
    }else{
        return 0;
    }
}
$dob = '1992-03-18';
echo ageCalculator($dob);
?>

获取年龄的非常小的代码:

<?php
    $dob='1981-10-07';
    $diff = (date('Y') - date('Y',strtotime($dob)));
    echo $diff;
?>

//output 35
参考链接


使用PHP的substr有一种从任何生日中查找日期的简单方法

$birth_date = '15.03.2014';
$date = substr($birth_date, 0, 2);
echo $date;
它只会简单地给出该出生日期的输出日期

在这种情况下,这将是15


有关详细信息,请参见…

以计算从出生日期算起的年龄,使用类似于下面的查询

'SELECT username, email, skype, avatar, TIMESTAMPDIFF(YEAR, date, CURDATE()) AS age, signup_date, gender FROM users WHERE id="'.$id.'"';


if(isset($_GET['id']))
{
    $id = intval($_GET['id']);

    $dn = mysql_query('select username, email, skype, avatar, TIMESTAMPDIFF(YEAR, date, CURDATE()) AS age, signup_date, gender from users where id="'.$id.'"');

    $dnn = mysql_fetch_array($dn);

    echo $dnn['age'];
}

注意:不要使用保留关键字列名

我希望你会觉得这很有用

$query1="SELECT TIMESTAMPDIFF (YEAR, YOUR_DOB_COLUMN, CURDATE()) AS age FROM your_table WHERE id='$user_id'";
$res1=mysql_query($query1);
$row=mysql_fetch_array($res1);
echo $row['age'];

$value['users_dob']是格式为yyyy-mm-dd的数据库值

您的日期的可能重复项是使用日期数据类型存储的?有很多“计算年龄”答案。谷歌是一个强大的工具!但是顺便说一下:不要使用mysql_*函数。使用PDO或MySQLiGet current date/time并从数据库中减去转换后的日期/时间…然后将其转换回年数,使用格式正确的strottime和date。以前从未有人这样做过,这难道不令人惊讶吗。@ph瞳孔:date_diff用于PHP版本>=5.3.0。@ph瞳孔:升级PHP;或者使用MySQL解决方案。这不适用于1岁以下的dob。。。显示0并不一定是理想的age@RymanHolmes:如果需要显示1岁,而不是0岁,请显示它。一个简单的if语句解决了这个问题。问题在哪里?这是怎么得到11票的?一个人的年龄也取决于一年中的日期和月份。你的方法是不正确的,如果一个人的出生日期为13-10-1991,而当前月份为7月,那么年龄是27岁,这是错误的。人的年龄是26岁,直到当前月份等于或大于DOB月份。问题是年龄,而不是某人出生的2位数年份。
<?php
    $dob='1981-10-07';
    $diff = (date('Y') - date('Y',strtotime($dob)));
    echo $diff;
?>

//output 35
$hours_in_day   = 24;
$minutes_in_hour= 60;
$seconds_in_mins= 60;

$birth_date     = new DateTime("1988-07-31T00:00:00");
$current_date   = new DateTime();

$diff           = $birth_date->diff($current_date);

echo $years     = $diff->y . " years " . $diff->m . " months " . $diff->d . " day(s)"; echo "<br/>";
echo $months    = ($diff->y * 12) + $diff->m . " months " . $diff->d . " day(s)"; echo "<br/>";
echo $weeks     = floor($diff->days/7) . " weeks " . $diff->d%7 . " day(s)"; echo "<br/>";
echo $days      = $diff->days . " days"; echo "<br/>";
echo $hours     = $diff->h + ($diff->days * $hours_in_day) . " hours"; echo "<br/>";
echo $mins      = $diff->h + ($diff->days * $hours_in_day * $minutes_in_hour) . " minutest"; echo "<br/>";
echo $seconds   = $diff->h + ($diff->days * $hours_in_day * $minutes_in_hour * $seconds_in_mins) . " seconds"; echo "<br/>";
$birth_date = '15.03.2014';
$date = substr($birth_date, 0, 2);
echo $date;
'SELECT username, email, skype, avatar, TIMESTAMPDIFF(YEAR, date, CURDATE()) AS age, signup_date, gender FROM users WHERE id="'.$id.'"';


if(isset($_GET['id']))
{
    $id = intval($_GET['id']);

    $dn = mysql_query('select username, email, skype, avatar, TIMESTAMPDIFF(YEAR, date, CURDATE()) AS age, signup_date, gender from users where id="'.$id.'"');

    $dnn = mysql_fetch_array($dn);

    echo $dnn['age'];
}
$query1="SELECT TIMESTAMPDIFF (YEAR, YOUR_DOB_COLUMN, CURDATE()) AS age FROM your_table WHERE id='$user_id'";
$res1=mysql_query($query1);
$row=mysql_fetch_array($res1);
echo $row['age'];
$getyear = explode("-", $value['users_dob']);
$dob = date('Y') - $getyear[0];