3

ユーザーの生年月日から年齢を計算するために遭遇した最も正確な関数は何ですか? 私は次のコードを持っていますが、すべての日付形式をサポートしているわけではなく、それが最も正確な関数であるかどうかもわからないため、どのように改善できるか疑問に思っていました (DateTime 準拠が良いでしょう)。

function getAge($birthday) {
    return floor((strtotime(date('d-m-Y')) - strtotime($date))/(60*60*24*365.2421896));
}
4

10 に答える 10

13
$birthday = new DateTime($birthday);
$interval = $birthday->diff(new DateTime);
echo $interval->y;

動作するはずです

于 2012-04-17T07:18:23.147 に答える
9

これをチェックして

<?php
$c= date('Y');
$y= date('Y',strtotime('1988-12-29'));
echo $c-$y;
?>
于 2013-03-01T04:58:19.563 に答える
3

このコードを使用して、年、月、日を含む完全な年齢を取得します-

    <?php
     //full age calulator
     $bday = new DateTime('02.08.1991');//dd.mm.yyyy
     $today = new DateTime('00:00:00'); // Current date
     $diff = $today->diff($bday);
     printf('%d years, %d month, %d days', $diff->y, $diff->m, $diff->d);
    ?>
于 2014-03-13T05:58:25.013 に答える
2

これにはDateTimeを使用してみてください:

$now      = new DateTime();
$birthday = new DateTime('1973-04-18 09:48:00');
$interval = $now->diff($birthday);
echo $interval->format('%y years'); // 39 years

実際に見る

于 2013-01-31T02:37:17.037 に答える
0

をに変更$date$birthdayます。

于 2012-04-17T07:30:18.200 に答える
0

夕食の精度を高めるには、うるう年の要因を考慮する必要があります。

function get_age($dob_day,$dob_month,$dob_year){
    $year   = gmdate('Y');
    $month  = gmdate('m');
    $day    = gmdate('d');
     //seconds in a day = 86400
    $days_in_between = (mktime(0,0,0,$month,$day,$year) - mktime(0,0,0,$dob_month,$dob_day,$dob_year))/86400;
    $age_float = $days_in_between / 365.242199; // Account for leap year
    $age = (int)($age_float); // Remove decimal places without rounding up once number is + .5
    return $age;
}

だから使用:

echo get_date(31,01,1985);

または何でも...

NBあなたの正確な年齢を小数まで見るには

return $age_float

代わりは。

于 2013-02-20T22:35:57.767 に答える
0

これは機能します:

<?
$date = date_create('1984-10-26');
$interval = $date->diff(new DateTime);
echo $interval->y;
?>

$birthday変数の形式を教えていただければ、正確な解決策を提供します

于 2012-04-17T07:29:22.910 に答える
0

なんてこと?

strtotime(日付('dmY'))

では、現在のタイムスタンプから日付文字列を生成し、その日付文字列をタイムスタンプに変換し直しますか?

ところで、それが機能しない理由の 1 つは、strtotime() が数値の日付が m/d/y 形式 (つまり、最初に日付の米国形式) であると想定していることです。もう 1 つの理由は、パラメーター ($birthday) が数式で使用されていないことです。

于 2012-04-17T08:40:55.617 に答える