PHP tính tuổi


160

Tôi đang tìm cách tính tuổi của một người, đưa ra DOB của họ ở định dạng dd / mm / yyyy.

Tôi đã sử dụng chức năng sau, hoạt động tốt trong vài tháng cho đến khi một số trục trặc khiến vòng lặp while không bao giờ kết thúc và khiến toàn bộ trang web bị dừng lại. Vì có gần 100.000 DOB đi qua chức năng này nhiều lần trong ngày, thật khó để xác định nguyên nhân gây ra điều này.

Có ai có cách tính tuổi đáng tin cậy hơn không?

//replace / with - so strtotime works
$dob = strtotime(str_replace("/","-",$birthdayDate));       
$tdate = time();

$age = 0;
while( $tdate > $dob = strtotime('+1 year', $dob))
{
    ++$age;
}
return $age;

EDIT: chức năng này có vẻ hoạt động tốt đôi khi, nhưng trả về "40" cho DOB ​​ngày 14/09/1986

return floor((time() - strtotime($birthdayDate))/31556926);

Câu trả lời:


192

Điều này hoạt động tốt.

<?php
  //date in mm/dd/yyyy format; or it can be in other formats as well
  $birthDate = "12/17/1983";
  //explode the date to get month, day and year
  $birthDate = explode("/", $birthDate);
  //get age from date or birthdate
  $age = (date("md", date("U", mktime(0, 0, 0, $birthDate[0], $birthDate[1], $birthDate[2]))) > date("md")
    ? ((date("Y") - $birthDate[2]) - 1)
    : (date("Y") - $birthDate[2]));
  echo "Age is:" . $age;
?>

1
Đồng ý, đôi khi cho định dạng đó chúng ta cần sử dụng mktime(). Có vẻ như php đã tính toán sai strtotime()với định dạng đó.
GusDeCooL

30
PHP strtotimehoàn toàn hiểu các định dạng ngày, bạn không cần phải lo lắng: Dates in the m/d/y or d-m-y formats are disambiguated by looking at the separator between the various components: if the separator is a slash (/), then the American m/d/y is assumed; whereas if the separator is a dash (-) or a dot (.), then the European d-m-y format is assumed. php.net/manual/en/feft.strtotime.php
s3v3n

Chức năng này thực sự tốn kém hơn các giải pháp khác. Nó đến từ việc sử dụng quá mức hàm date ().
Jarzon

Ngày đẹp theo tỷ lệ. Cảm ơn
Roque Mejos

172
$tz  = new DateTimeZone('Europe/Brussels');
$age = DateTime::createFromFormat('d/m/Y', '12/02/1973', $tz)
     ->diff(new DateTime('now', $tz))
     ->y;

Kể từ phiên bản PHP 5.3.0, bạn có thể sử dụng tiện dụng DateTime::createFromFormatđể đảm bảo rằng ngày của bạn không bị nhầm với m/d/Yđịnh dạng và DateIntervallớp (thông qua DateTime::diff) để có được số năm từ nay đến ngày đích.


1
Có vẻ đầy hứa hẹn, nhưng thật không may, hầu hết các máy chủ lưu trữ ở nước tôi vẫn sử dụng PHP 5.2.x :(
GusDeCooL

3
Nó thực sự cần một múi giờ?
André Chalella

127
 $date = new DateTime($bithdayDate);
 $now = new DateTime();
 $interval = $now->diff($date);
 return $interval->y;

Tôi đã thử sử dụng DateTime () trước đây nhưng điều này đóng băng tập lệnh. Trong nhật ký của tôi, tôi thấy Cảnh báo PHP: date (): Không an toàn khi dựa vào cài đặt múi giờ của hệ thống, ngay cả khi tôi thêm date_default_timezone_set ('Châu Âu / Brussels');
stef

1
Bạn có chắc chắn đã xóa # trước dòng đó không? Bạn nên đặt nó trong PHP.ini
Wernight

Nó thường an toàn để bỏ qua cảnh báo đó (đặc biệt là trong trường hợp đó).
Wernight

96

Tôi sử dụng Ngày / Giờ cho việc này:

$age = date_diff(date_create($bdate), date_create('now'))->y;

Bạn có thể sử dụng một cái gì đó như thế này cho các định dạng ngày theo kiểu người Anh: $ age = date_diff (date_create (str numplace ('/', '.', $ Bdate)), date_create ('now')) -> y; vì stackoverflow.com/questions/4163641/ Mạnh
Richard

1
Giải pháp đơn giản nhất, chỉ một dòng. Chỉ hoạt động trên PHP 5.3+
Rhaymand Tatlonghari

60

Phương pháp đơn giản để tính Tuổi từ dob:

$_age = floor((time() - strtotime('1986-09-16')) / 31556926);

31556926 là số giây trong một năm.


16
sử dụng quá mức các chức năng ...$_age = floor((time() - strtotime('1986-09-16')) / 31556926);
Mavelo

4
Giải pháp tốt nhất ... 1 lớp lót, đơn giản và tránh sử dụng: mktime
Timmy

1
@RobertM. Điều đó thật tệ trong trường hợp này? Tôi không nghĩ rằng các chức năng này phức tạp hay "nặng nề"
Dewan159

1
@ Dewan159 nhìn vào lịch sử chỉnh sửa ... đã được thay đổi để phù hợp với giải pháp của tôi;)
Mavelo

4
Còn giây nhuận thì sao?
ksimka

17

// Máy tính tuổi

function getAge($dob,$condate){ 
    $birthdate = new DateTime(date("Y-m-d",  strtotime(implode('-', array_reverse(explode('/', $dob))))));
    $today= new DateTime(date("Y-m-d",  strtotime(implode('-', array_reverse(explode('/', $condate))))));           
    $age = $birthdate->diff($today)->y;

    return $age;
}

$dob='06/06/1996'; //date of Birth
$condate='07/02/16'; //Certain fix Date of Age 
echo getAge($dob,$condate);

5
Giải pháp hiện đại tốt nhất 2016.
AlexioVay

14

Tôi tìm thấy công việc này và đơn giản.

Trừ từ 1970 vì strtotime tính thời gian từ 1970-01-01 ( http://php.net/manual/en/feft.strtotime.php )

function getAge($date) {
    return intval(date('Y', time() - strtotime($date))) - 1970;
}

Các kết quả:

Current Time: 2015-10-22 10:04:23

getAge('2005-10-22') // => 10
getAge('1997-10-22 10:06:52') // one 1s before  => 17
getAge('1997-10-22 10:06:50') // one 1s after => 18
getAge('1985-02-04') // => 30
getAge('1920-02-29') // => 95

Gần như đúng ... strtotime () tính thời gian từ 1969-12-31 18:00:00
phượng hoàng

8

Nếu bạn muốn tính tuổi của việc sử dụng dob, bạn cũng có thể sử dụng chức năng này. Nó sử dụng đối tượng DateTime.

function calcutateAge($dob){

        $dob = date("Y-m-d",strtotime($dob));

        $dobObject = new DateTime($dob);
        $nowObject = new DateTime();

        $diff = $dobObject->diff($nowObject);

        return $diff->y;

}

8

Hình tôi sẽ ném nó ở đây vì đây dường như là hình thức phổ biến nhất của câu hỏi này.

Tôi đã chạy một so sánh 100 năm về 3 loại funcs phổ biến nhất mà tôi có thể tìm thấy cho PHP và đăng kết quả của mình (cũng như các chức năng) lên blog của mình .

Như bạn có thể thấy ở đó , cả 3 funcs đều hoạt động tốt chỉ với một chút khác biệt về chức năng thứ 2. Đề xuất của tôi dựa trên kết quả của tôi là sử dụng chức năng thứ 3 trừ khi bạn muốn làm điều gì đó cụ thể vào ngày sinh nhật của một người, trong trường hợp đó, chức năng thứ 1 cung cấp một cách đơn giản để thực hiện chính xác điều đó.

Tìm thấy vấn đề nhỏ với thử nghiệm, và một vấn đề khác với phương pháp thứ 2! Cập nhật sắp tới blog! Hiện tại, tôi xin lưu ý, phương pháp thứ 2 vẫn là phương pháp phổ biến nhất mà tôi tìm thấy trên mạng, nhưng vẫn là phương pháp tôi đang tìm thấy không chính xác nhất!

Đề xuất của tôi sau khi xem xét 100 năm của tôi:

Nếu bạn muốn một cái gì đó kéo dài hơn để bạn có thể bao gồm các dịp như sinh nhật và như vậy:

function getAge($date) { // Y-m-d format
    $now = explode("-", date('Y-m-d'));
    $dob = explode("-", $date);
    $dif = $now[0] - $dob[0];
    if ($dob[1] > $now[1]) { // birthday month has not hit this year
        $dif -= 1;
    }
    elseif ($dob[1] == $now[1]) { // birthday month is this month, check day
        if ($dob[2] > $now[2]) {
            $dif -= 1;
        }
        elseif ($dob[2] == $now[2]) { // Happy Birthday!
            $dif = $dif." Happy Birthday!";
        };
    };
    return $dif;
}

getAge('1980-02-29');

Nhưng nếu bạn chỉ đơn giản là muốn biết tuổi và không có gì hơn, thì:

function getAge($date) { // Y-m-d format
    return intval(substr(date('Ymd') - date('Ymd', strtotime($date)), 0, -4));
}

getAge('1980-02-29');

Xem BLOG


Một lưu ý chính về strtotimephương pháp:

Note:

Dates in the m/d/y or d-m-y formats are disambiguated by looking at the 
separator between the various components: if the separator is a slash (/), 
then the American m/d/y is assumed; whereas if the separator is a dash (-) 
or a dot (.), then the European d-m-y format is assumed. If, however, the 
year is given in a two digit format and the separator is a dash (-, the date 
string is parsed as y-m-d.

To avoid potential ambiguity, it's best to use ISO 8601 (YYYY-MM-DD) dates or 
DateTime::createFromFormat() when possible.

8

Bạn có thể sử dụng Carbonthư viện là tiện ích mở rộng API cho DateTime.

Bạn có thể:

function calculate_age($date) {
    $date = new \Carbon\Carbon($date);
    return (int) $date->diffInYears();
}

hoặc là:

$age = (new \Carbon\Carbon($date))->age;

1
Đây là một giải pháp sạch hơn nhưng nó đòi hỏi một lib bên ngoài có thể không phải là tốt nhất cho mọi dự án
stef

1
carbon cung cấp tài sản ma thuật age, đó là làm diffInYears. Vì vậy, bạn có thể viết:(new \Carbon\Carbon($date))->age
k0pernikus

4

Nếu bạn không cần độ chính xác cao, chỉ cần số năm, bạn có thể xem xét sử dụng mã bên dưới ...

 print floor((time() - strtotime("1971-11-20")) / (60*60*24*365));

Bạn chỉ cần đặt hàm này vào một hàm và thay thế ngày "1971-11-20" bằng một biến.

Xin lưu ý rằng độ chính xác của mã ở trên không cao vì năm nhuận, tức là cứ sau 4 năm, số ngày là 365 thay vì 365. Biểu thức 60 * 60 * 24 * 365 tính toán số giây trong một năm - bạn có thể thay thế nó bằng 31536000.

Một điều quan trọng khác là vì việc sử dụng UNIX Timestamp, nó có cả vấn đề Năm 1901 và Năm 2038, có nghĩa là biểu thức trên sẽ không hoạt động chính xác cho các ngày trước năm 1901 và sau năm 2038.

Nếu bạn có thể sống với những hạn chế được đề cập ở trên, mã đó sẽ phù hợp với bạn.


Điều gì sẽ xảy ra vào năm 2038 "mọi hệ thống" sẽ sụp đổ nếu sử dụng thời gian ()?
Miguel

3
//replace / with - so strtotime works
$dob = strtotime(str_replace("/","-",$birthdayDate));       
$tdate = time();
return date('Y', $tdate) - date('Y', $dob);

1
Không hoạt động. Hàm của bạn sẽ chỉ ra rằng ai đó sinh vào ngày 1 tháng 9 năm 1990 bằng tuổi với người sinh vào ngày 1 tháng 10 năm 1990 - nó sẽ tính (2010 - 1990) = 20 cho cả hai người.
PaulJWilliams

độ chính xác của tuổi bạn cần là gì? tháng? ngày?
Serge Eremin

3
  function dob ($birthday){
    list($day,$month,$year) = explode("/",$birthday);
    $year_diff  = date("Y") - $year;
    $month_diff = date("m") - $month;
    $day_diff   = date("d") - $day;
    if ($day_diff < 0 || $month_diff < 0)
      $year_diff--;
    return $year_diff;
  }

Có vẻ ổn vào một số ngày nhưng đối với những người khác, nó không trả về gì cả, có lẽ nếu IF không được đáp ứng?
Stef

3

Tôi đã tìm thấy kịch bản này đáng tin cậy. Nó có định dạng ngày là YYYY-mm-dd, nhưng nó có thể được sửa đổi cho các định dạng khác khá dễ dàng.

/*
* Get age from dob
* @param        dob      string       The dob to validate in mysql format (yyyy-mm-dd)
* @return            integer      The age in years as of the current date
*/
function getAge($dob) {
    //calculate years of age (input string: YYYY-MM-DD)
    list($year, $month, $day) = explode("-", $dob);

    $year_diff  = date("Y") - $year;
    $month_diff = date("m") - $month;
    $day_diff   = date("d") - $day;

    if ($day_diff < 0 || $month_diff < 0)
        $year_diff--;

    return $year_diff;
}

2
Xin vui lòng một số chi tiết về làm thế nào điều này sẽ hữu ích. Chỉ cần dán một chức năng không phải là một cách chính xác để trả lời.
Starx

3
$birthday_timestamp = strtotime('1988-12-10');  

// Calculates age correctly
// Just need birthday in timestamp
$age = date('md', $birthday_timestamp) > date('md') ? date('Y') - date('Y', $birthday_timestamp) - 1 : date('Y') - date('Y', $birthday_timestamp);

3

i18n:

function getAge($birthdate, $pattern = 'eu')
{
    $patterns = array(
        'eu'    => 'd/m/Y',
        'mysql' => 'Y-m-d',
        'us'    => 'm/d/Y',
    );

    $now      = new DateTime();
    $in       = DateTime::createFromFormat($patterns[$pattern], $birthdate);
    $interval = $now->diff($in);
    return $interval->y;
}

// Usage
echo getAge('05/29/1984', 'us');
// return 28

3

Hãy thử bất kỳ trong số này bằng cách sử dụng đối tượng DateTime

$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/>";

Tham khảo http://www.calculator.net/age-calculator.html


3

Viết một kịch bản PHP để tính tuổi hiện tại của một người.

Ngày sinh mẫu: 11.4.1987

Giải pháp mẫu:

Mã PHP:

<?php
$bday = new DateTime('11.4.1987'); // Your date of birth
$today = new Datetime(date('m.d.y'));
$diff = $today->diff($bday);
printf(' Your age : %d years, %d month, %d days', $diff->y, $diff->m, $diff->d);
printf("\n");
?>

Đầu ra mẫu:

Tuổi của bạn: 30 tuổi, 3 tháng, 0 ngày


2

đây là chức năng của tôi để tính toán DOB với tỷ lệ hoàn vốn cụ thể theo tuổi, tháng và ngày

function ageDOB($y=2014,$m=12,$d=31){ /* $y = year, $m = month, $d = day */
date_default_timezone_set("Asia/Jakarta"); /* can change with others time zone */

$ageY = date("Y")-intval($y);
$ageM = date("n")-intval($m);
$ageD = date("j")-intval($d);

if ($ageD < 0){
    $ageD = $ageD += date("t");
    $ageM--;
    }
if ($ageM < 0){
    $ageM+=12;
    $ageY--;
    }
if ($ageY < 0){ $ageD = $ageM = $ageY = -1; }
return array( 'y'=>$ageY, 'm'=>$ageM, 'd'=>$ageD );
}

đây là cách sử dụng nó

$ age = ageDOB (1984,5,8); / * với giờ địa phương của tôi là 2014 / 07-01 * /
echo sprintf ("age =% d năm% d tháng% d ngày", $ age ['y'], $ age ['m'], $ age ['d']); / * sản lượng -> tuổi = 29 năm 1 tháng 24 ngày * /

2

Chức năng này sẽ trả lại tuổi trong năm. Giá trị đầu vào là ngày sinh (YYYY-MM-DD) của ngày sinh, ví dụ: 2000-01-01

Nó hoạt động với ngày - chính xác

function getAge($dob) {
    //calculate years of age (input string: YYYY-MM-DD)
    list($year, $month, $day) = explode("-", $dob);

    $year_diff  = date("Y") - $year;
    $month_diff = date("m") - $month;
    $day_diff   = date("d") - $day;

    // if we are any month before the birthdate: year - 1 
    // OR if we are in the month of birth but on a day 
    // before the actual birth day: year - 1
    if ( ($month_diff < 0 ) || ($month_diff === 0 && $day_diff < 0))
        $year_diff--;   

    return $year_diff;
}

Chúc mừng, nira


1

Nếu bạn dường như không thể sử dụng một số chức năng mới hơn, thì đây là thứ tôi đã đánh cắp. Có thể nhiều hơn bạn cần, và tôi chắc chắn có những cách tốt hơn, nhưng nó dễ đọc, vì vậy nó nên thực hiện công việc:

function get_age($date, $units='years')
{
    $modifier = date('n') - date('n', strtotime($date)) ? 1 : (date('j') - date('j', strtotime($date)) ? 1 : 0);
    $seconds = (time()-strtotime($date));
    $years = (date('Y')-date('Y', strtotime($date))-$modifier);
    switch($units)
    {
        case 'seconds':
            return $seconds;
        case 'minutes':
            return round($seconds/60);
        case 'hours':
            return round($seconds/60/60);
        case 'days':
            return round($seconds/60/60/24);
        case 'months':
            return ($years*12+date('n'));
        case 'decades':
            return ($years/10);
        case 'centuries':
            return ($years/100);
        case 'years':
        default:
            return $years;
    }
}

Ví dụ sử dụng:

echo 'I am '.get_age('September 19th, 1984', 'days').' days old';

Hi vọng điêu nay co ich.


1

Do năm nhuận, sẽ không khôn ngoan nếu chỉ trừ đi một ngày từ ngày khác và vượt qua số năm. Để tính tuổi như con người, bạn sẽ cần một cái gì đó như thế này:

$birthday_date = '1977-04-01';
$age = date('Y') - substr($birthday_date, 0, 4);
if (strtotime(date('Y-m-d')) - strtotime(date('Y') . substr($birthday_date, 4, 6)) < 0)
{
    $age--;
}

1

Những điều sau đây rất tốt cho tôi và dường như đơn giản hơn rất nhiều so với các ví dụ đã được đưa ra.

$dob_date = "01";
$dob_month = "01";
$dob_year = "1970";
$year = gmdate("Y");
$month = gmdate("m");
$day = gmdate("d");
$age = $year-$dob_year; // $age calculates the user's age determined by only the year
if($month < $dob_month) { // this checks if the current month is before the user's month of birth
  $age = $age-1;
} else if($month == $dob_month && $day >= $dob_date) { // this checks if the current month is the same as the user's month of birth and then checks if it is the user's birthday or if it is after it
  $age = $age;
} else if($month == $dob_month && $day < $dob_date) { //this checks if the current month is the user's month of birth and checks if it before the user's birthday
  $age = $age-1;
} else {
  $age = $age;
}

Tôi đã thử nghiệm và chủ động sử dụng mã này, nó có vẻ hơi cồng kềnh nhưng nó rất đơn giản để sử dụng và chỉnh sửa và khá chính xác.


1

Theo logic đầu tiên, bạn phải sử dụng = trong so sánh.

<?php 
    function age($birthdate) {
        $birthdate = strtotime($birthdate);
        $now = time();
        $age = 0;
        while ($now >= ($birthdate = strtotime("+1 YEAR", $birthdate))) {
            $age++;
        }
        return $age;
    }

    // Usage:

    echo age(implode("-",array_reverse(explode("/",'14/09/1986')))); // format yyyy-mm-dd is safe!
    echo age("-10 YEARS") // without = in the comparison, will returns 9.

?>

Bị hạ bệ. Trong khi nó hoạt động, nó không hiệu quả khi sử dụng một vòng lặp để làm toán cơ bản.
Wranorn

1

Đó là một vấn đề khi bạn sử dụng strtotime với DD / MM / YYYY. Bạn không thể sử dụng định dạng đó. Thay vì nó, bạn có thể sử dụng MM / DD / YYYY (hoặc nhiều người khác như YYYYMMDD hoặc YYYY-MM-DD) và nó sẽ hoạt động bình thường.


1

Làm thế nào về việc khởi chạy truy vấn này và có MySQL tính toán nó cho bạn:

SELECT 
username
,date_of_birth
,(PERIOD_DIFF( DATE_FORMAT(CURDATE(), '%Y%m') , DATE_FORMAT(date_of_birth, '%Y%m') )) DIV 12 AS years
,(PERIOD_DIFF( DATE_FORMAT(CURDATE(), '%Y%m') , DATE_FORMAT(date_of_birth, '%Y%m') )) MOD 12 AS months
FROM users

Kết quả:

r2d2, 1986-12-23 00:00:00, 27 , 6 

Người dùng có 27 năm và 6 tháng (tính cả tháng)


Đây thực sự là một giải pháp tốt cho mọi người trên các phiên bản PHP trước 5.3 không có quyền truy cập vào date_diff và tương tự.
người lạ mặt

1

Tôi đã làm nó như thế này.

$geboortedatum = 1980-01-30 00:00:00;
echo leeftijd($geboortedatum) 

function leeftijd($geboortedatum) {
    $leeftijd = date('Y')-date('Y', strtotime($geboortedatum));
    if (date('m')<date('m', strtotime($geboortedatum)))
        $leeftijd = $leeftijd-1;
    elseif (date('m')==date('m', strtotime($geboortedatum)))
       if (date('d')<date('d', strtotime($geboortedatum)))
           $leeftijd = $leeftijd-1;
    return $leeftijd;
}

1

Câu trả lời hàng đầu cho điều này là OK nhưng chỉ tính theo năm một người được sinh ra, tôi đã điều chỉnh nó cho mục đích riêng của mình để làm việc trong ngày và tháng. Nhưng nghĩ rằng nó là giá trị chia sẻ.

Điều này hoạt động bằng cách lấy dấu thời gian của DOB người dùng, nhưng hãy thoải mái thay đổi điều đó

$birthDate = date('d-m-Y',$usersDOBtimestamp);
$currentDate = date('d-m-Y', time());
//explode the date to get month, day and year
$birthDate = explode("-", $birthDate);
$currentDate = explode("-", $currentDate);
$birthDate[0] = ltrim($birthDate[0],'0');
$currentDate[0] = ltrim($currentDate[0],'0');
//that gets a rough age
$age = $currentDate[2] - $birthDate[2];
//check if month has passed
if($birthDate[1] > $currentDate[1]){
      //user birthday has not passed
      $age = $age - 1;
} else if($birthDate[1] == $currentDate[1]){ 
      //check if birthday is in current month
      if($birthDate[0] > $currentDate[0]){
            $age - 1;
      }


}
   echo $age;

1

Nếu bạn muốn chỉ nhận được đầy đủ theo tuổi, có một cách siêu nhanh để làm điều đó. coi ngày được định dạng là 'YYYYMMDD' dưới dạng số và trừ chúng. Sau đó, hủy bỏ phần MMDD bằng cách chia kết quả với 10000 và giảm xuống. Đơn giản và không bao giờ thất bại, thậm chí mất cả tài khoản và thời gian máy chủ hiện tại của bạn;)

Vì ngày sinh hoặc hầu hết được cung cấp bởi ngày đầy đủ trên vị trí sinh và chúng có liên quan đến THỜI GIAN ĐỊA PHƯƠNG (nơi kiểm tra tuổi thực sự được thực hiện).

$now = date['Ymd'];
$birthday = '19780917'; #september 17th, 1978
$age = floor(($now-$birtday)/10000);

vì vậy nếu bạn muốn kiểm tra xem ai đó là 18 hoặc 21 hoặc dưới 100 trên múi giờ của bạn (không bao giờ là múi giờ gốc) vào ngày sinh nhật, đây là cách của tôi để làm điều này


0

Thử cái này :

<?php
  $birth_date = strtotime("1988-03-22");
  $now = time();
  $age = $now-$birth_date;
  $a = $age/60/60/24/365.25;
  echo floor($a);
?>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.