PHP उम्र की गणना करता है


160

मैं किसी व्यक्ति की आयु की गणना करने का तरीका खोज रहा हूं, प्रारूप dd / mm / yyyy में उनका DOB दिया गया है।

मैं निम्नलिखित फ़ंक्शन का उपयोग कर रहा था जो कई महीनों तक ठीक काम करता था जब तक कि किसी प्रकार की गड़बड़ का कारण नहीं होता, जबकि लूप कभी भी समाप्त नहीं होता है और पूरे साइट को एक पड़ाव पर पीसता है। चूँकि, इस समारोह में दिन में कई बार लगभग 100,000 DOB होते हैं, इसलिए यह मुश्किल है कि यह क्या कारण है।

क्या किसी के पास उम्र की गणना करने का अधिक विश्वसनीय तरीका है?

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

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

संपादित करें: यह फ़ंक्शन कुछ समय के लिए ठीक काम करता है, लेकिन 14/09/1986 के DOB के लिए "40" देता है

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

जवाबों:


192

यह ठीक काम करता है।

<?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
सहमत हूं, उस प्रारूप के लिए कुछ समय हमें उपयोग करने की आवश्यकता है mktime()। ऐसा लगता है strtotime()कि php उस प्रारूप के साथ गलत है ।
GusDeCooL 17

30
PHP strtotimeपूरी तरह से तारीख स्वरूपों को समझता है, आपको चिंता करने की आवश्यकता नहीं है: 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/function.strtotime.php
s3v3n

यह फ़ंक्शन वास्तव में अन्य समाधानों की तुलना में अधिक महंगा है। यह तिथि () फ़ंक्शन के अति प्रयोग से आ रहा है।
जारजॉन

अच्छी पूर्व निर्धारित तिथि। धन्यवाद
Roque Mejos

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

PHP 5.3.0 के रूप में, आप DateTime::createFromFormatयह सुनिश्चित करने के लिए काम का उपयोग कर सकते हैं कि आपकी तिथि m/d/Yप्रारूप के लिए गलत नहीं है और DateIntervalवर्ग (के माध्यम से DateTime::diff) अब और लक्ष्य की तारीख के बीच वर्षों की संख्या प्राप्त करने के लिए।


1
होनहार लगता है, लेकिन दुर्भाग्य से मेरे देश में अधिकांश सर्वर होस्टिंग अभी भी PHP 5.2.x का उपयोग करते हैं :(
GusDeCooL

3
क्या वास्तव में इसे एक समयक्षेत्र की आवश्यकता है?
एंड्रे चलेला

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

मैंने पहले डेटटाइम () का उपयोग करने की कोशिश की लेकिन यह स्क्रिप्ट को जमा देता है। मेरे लॉग में मुझे PHP की चेतावनी दिखाई देती है: दिनांक (): सिस्टम के टाइमज़ोन सेटिंग्स पर भरोसा करना सुरक्षित नहीं है, यहां तक ​​कि जब मैं date_default_timezone_set ('यूरोप / ब्रुसेल्स') जोड़ता हूं;
stef

1
आपको यकीन है कि आपने उस लाइन से पहले # हटा दिया था? आपको यह निर्धारित करना चाहिए कि PHP.ini
वेर्नेट

यह आमतौर पर उस चेतावनी को अनदेखा करना सुरक्षित है (विशेषकर उस मामले में)।
वर्नट

96

मैं इसके लिए दिनांक / समय का उपयोग करता हूं:

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

आप ब्राइटिश स्टाइल डेट फॉर्मेट्स के लिए कुछ इस तरह से उपयोग कर सकते हैं: $ age = date_diff (date_create (str_replace ('/', '।, $ Bdate)), date_create (' अब ')) -> y; stackoverflow.com/questions/4163641/… के
रिचर्ड

1
सरलतम समाधान, केवल एक पंक्ति। PHP 5.3+ पर ही काम करता है
रमानंद टाटलोंगारी

60

Dob से आयु की गणना के लिए सरल विधि:

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

31556926 एक वर्ष में सेकंड की संख्या है।


16
कार्यों का अत्यधिक उपयोग ...$_age = floor((time() - strtotime('1986-09-16')) / 31556926);
Mavelo

4
सबसे अच्छा समाधान ... 1 लाइनर, सरल और उपयोग करने से बचें: mktime
टिम्मी

1
@RobertM। क्या इस मामले में इतना बुरा है? मुझे नहीं लगता कि ये कार्य उस जटिल या "भारी" हैं
दीवान 15

1
@ Dewan159 संपादित इतिहास को देखें ... मेरे समाधान से मेल करने के लिए बदल दिया गया था;)
मावलो

4
लीप सेकंड के बारे में क्या?
ksimka

17

// आयु कैलकुलेटर

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
सर्वश्रेष्ठ आधुनिक समाधान 2016.
एलेक्सियोवे

14

मुझे यह काम लगता है और सरल है।

1970 से घटाना क्योंकि strtotime 1970-01-01 ( http://php.net/manual/en/function.strtotime.php ) से समय की गणना करता है

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

परिणाम:

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

लगभग सच ... स्ट्रेटोइम () 1969-12-31 18:00:00 से समय की गणना करता है
फीनिक्स

8

यदि आप dob का उपयोग करने की आयु caculate करना चाहते हैं, तो आप इस फ़ंक्शन का उपयोग भी कर सकते हैं। यह 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

यह मैं इस सवाल का सबसे लोकप्रिय रूप लगता है के बाद से यहाँ पर फेंक देंगे।

मैंने सबसे लोकप्रिय प्रकारों में से 3 पर 100 साल की तुलना की, जो मुझे PHP के लिए मिल सकते हैं और अपने परिणामों (साथ ही कार्यों) को अपने ब्लॉग पर पोस्ट किया

जैसा कि आप वहां देख सकते हैं , सभी 3 फंक 2 फ़ंक्शन पर सिर्फ एक मामूली अंतर के साथ अच्छी तरह से प्रीफॉर्म करते हैं। मेरे परिणामों के आधार पर मेरा सुझाव 3 फ़ंक्शन का उपयोग करना है जब तक कि आप किसी व्यक्ति के जन्मदिन पर कुछ विशिष्ट नहीं करना चाहते हैं, उस स्थिति में 1 फ़ंक्शन बिल्कुल ऐसा करने का एक सरल तरीका प्रदान करता है।

परीक्षण के साथ छोटा मुद्दा मिला, और दूसरा तरीका 2 विधि के साथ! जल्द ही ब्लॉग पर अपडेट आना! अभी के लिए, मैं नोट करूंगा, दूसरा तरीका अभी भी सबसे लोकप्रिय है जिसे मैं ऑनलाइन पाता हूं, और फिर भी अभी भी मैं सबसे अधिक अशुद्धियों को ढूंढ रहा हूं!

मेरे 100 साल की समीक्षा के बाद मेरे सुझाव:

यदि आप कुछ और बढ़ाना चाहते हैं ताकि आप जन्मदिन और इस तरह के अवसरों को शामिल कर सकें:

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');

लेकिन अगर आप बस उम्र जानना चाहते हैं और इससे ज्यादा कुछ नहीं, तो:

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

getAge('1980-02-29');

देखें BLOG


strtotimeविधि के बारे में एक महत्वपूर्ण सूचना :

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

आप पुस्तकालय का उपयोग कर सकते हैंCarbon , जो डेटटाइम के लिए एपीआई एक्सटेंशन है।

आप ऐसा कर सकते हैं:

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

या:

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

1
यह एक क्लीनर समाधान है, लेकिन इसके लिए एक बाहरी दायित्व की आवश्यकता होती है जो हर परियोजना के लिए सबसे अच्छा नहीं हो सकता है
stef

1
कार्बन जादू की संपत्ति प्रदान करता है age, जो एक कर रहा है diffInYears। तो आप लिख सकते हैं:(new \Carbon\Carbon($date))->age
k0pernikus

4

यदि आपको महान परिशुद्धता की आवश्यकता नहीं है, तो बस वर्षों की संख्या, आप नीचे दिए गए कोड का उपयोग करने पर विचार कर सकते हैं ...

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

आपको इसे केवल एक फंक्शन में रखना है और "1971-11-20" तारीख को एक चर के साथ बदलना है।

कृपया ध्यान दें कि लीप वर्षों के कारण ऊपर दिए गए कोड की सटीकता अधिक नहीं है, अर्थात लगभग 4 वर्षों में दिन 365 के बजाय 366 हैं। अभिव्यक्ति 60 * 60 * 24 * 365 एक वर्ष में सेकंड की संख्या की गणना करती है - आप कर सकते हैं इसे 31536000 से बदलें।

एक और महत्वपूर्ण बात यह है कि यूनिक्स के उपयोग के कारण टाइमस्टैम्प इसमें वर्ष 1901 और वर्ष 2038 समस्या दोनों है जिसका अर्थ है कि उपरोक्त अभिव्यक्ति वर्ष 1901 से पहले और वर्ष 2038 के बाद की तारीखों के लिए सही ढंग से काम नहीं करेगी।

यदि आप उस कोड के ऊपर बताई गई सीमाओं के साथ रह सकते हैं तो आपको काम करना चाहिए


यदि समय () का उपयोग किया जाता है तो 2038 में "हर सिस्टम" दुर्घटनाग्रस्त हो जाएगा।
मिगुएल

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

1
काम नहीं करता। आपके कार्य से संकेत मिलता है कि किसी का जन्म 1 सितंबर 1990 को हुआ है, जो कि 1 अक्टूबर 1990 को जन्मे किसी व्यक्ति की उम्र है - यह दोनों के लिए (2010 - 1990) = 20 की गणना करेगा।
पॉलजविलियम्स

आपको किस आयु की आवश्यकता है? महीना? दिन?
सेर्गेई एरेमिन

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;
  }

कुछ तारीखों में ठीक लगता है, लेकिन दूसरों के लिए यह कुछ भी नहीं है, शायद अगर आईएफ पूरा नहीं हुआ है?
स्टेफ

3

मुझे यह स्क्रिप्ट विश्वसनीय लगी है। यह दिनांक स्वरूप को YYYY-mm-dd के रूप में लेता है, लेकिन इसे अन्य स्वरूपों के लिए बहुत आसानी से संशोधित किया जा सकता है।

/*
* 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
कृपया कुछ विस्तार से बताएं कि यह कैसे सहायक होगा। किसी फ़ंक्शन को चिपकाने से जवाब देने का सही तरीका नहीं है।
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

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

संदर्भ http://www.calculator.net/age-calculator.html


3

किसी व्यक्ति की वर्तमान आयु की गणना करने के लिए एक PHP स्क्रिप्ट लिखें।

जन्म तिथि: 11.4.1987

नमूना समाधान:

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");
?>

नमूना आउटपुट:

आपकी आयु: 30 वर्ष, 3 माह, 0 दिन


2

यह वर्ष, महीने और दिन के हिसाब से उम्र की विशिष्ट वापसी के साथ डीओबी की गणना करने का मेरा कार्य है

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 );
}

इसका उपयोग कैसे करें

$ आयु = आयुDOB (1984,5,8); / * मेरे स्थानीय समय के साथ 2014-07-01 * / है
इको स्प्रिंटफ़ ("आयु =% d वर्ष% d महीने% d दिन", $ आयु ['y'], $ आयु ['m'], $ आयु ['d']); / * आउटपुट -> उम्र = 29 वर्ष 1 महीना 24 दिन * /

2

यह फ़ंक्शन वर्षों में उम्र वापस कर देगा। इनपुट वैल्यू जन्मतिथि के रूप में तैयार की गई तारीख (YYYY-MM-DD) दिन है: 2000-01-01

यह दिन के साथ काम करता है - सटीक

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;
}

चीयर्स, नीरा


1

यदि आप नए कार्यों में से कुछ का उपयोग करने के लिए प्रतीत नहीं कर सकते हैं, तो यहाँ कुछ मैं मार पड़ी है। संभवतः आपकी आवश्यकता से अधिक, और मुझे यकीन है कि बेहतर तरीके हैं, लेकिन यह पढ़ना आसान है, इसलिए इसे काम करना चाहिए:

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;
    }
}

उदाहरण का उपयोग करें:

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

उम्मीद है की यह मदद करेगा।


1

लीप वर्ष के कारण, एक तिथि को दूसरे से घटाना और इसे वर्षों की संख्या तक सीमित करना बुद्धिमानी नहीं है। मनुष्यों की तरह उम्र की गणना करने के लिए, आपको कुछ इस तरह की आवश्यकता होगी:

$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

निम्नलिखित मेरे लिए बहुत अच्छा काम करता है और पहले से दिए गए उदाहरणों की तुलना में बहुत सरल प्रतीत होता है।

$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;
}

मैंने इस कोड का परीक्षण और सक्रिय रूप से उपयोग किया है, यह थोड़ा बोझिल लग सकता है, लेकिन इसका उपयोग करना और संपादित करना बहुत सरल है और काफी सटीक है।


1

पहले तर्क के बाद, आपको तुलना में = का उपयोग करना होगा।

<?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.

?>

Downvoted। हालांकि यह काम करता है कि बुनियादी गणित करने के लिए लूप का उपयोग करना अक्षम है।
23

1

जब आप DD / MM / YYYY के साथ strtotime का उपयोग करते हैं तो यह एक समस्या है। आप उस प्रारूप का उपयोग नहीं कर सकते। इसके बजाय आप MM / DD / YYYY (या YYYYMMDD या YYYY-MM-DD जैसे कई अन्य) का उपयोग कर सकते हैं और इसे ठीक से काम करना चाहिए।


1

इस क्वेरी को लॉन्च करने के बारे में और MySQL की आपके लिए गणना करने के बारे में:

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

परिणाम:

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

उपयोगकर्ता के पास 27 वर्ष और 6 महीने हैं (यह एक पूरे महीने की गणना करता है)


यह वास्तव में PHP के पूर्व 5.3 संस्करणों पर लोगों के लिए एक अच्छा समाधान है जिनके पास date_diff और इस तरह की पहुंच नहीं है।
अजनबी

1

मैंने इसे इस तरह किया।

$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

इसके लिए शीर्ष उत्तर ठीक है, लेकिन जिस वर्ष एक व्यक्ति का जन्म हुआ था, केवल उसी दिन को शांत करता है, मैंने इसे अपने स्वयं के उद्देश्यों के लिए दिन और महीने के लिए काम किया। लेकिन लगा कि यह साझा करने लायक है।

यह उपयोगकर्ताओं के एक टाइमस्टैम्प द्वारा काम करता है DOB, लेकिन इसे बदलने के लिए स्वतंत्र महसूस करता है

$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

यदि आप केवल उम्र के रूप में पूरी तरह से प्राप्त करना चाहते हैं, तो ऐसा करने का एक शानदार तरीका है। संख्याओं के रूप में 'YYYYMMDD' के रूप में स्वरूपित तारीखों का इलाज करें और उन्हें प्रतिस्थापित करें। उसके बाद 10000 के साथ परिणाम को विभाजित करके MMDD भाग को रद्द करें और इसे नीचे रखें। सरल और कभी भी विफल नहीं होता है, यहां तक ​​कि खामियों और आपके वर्तमान सर्वर समय को भी ध्यान में रखता है;)

चूंकि जन्म स्थान पर या तो पूर्ण तिथियों द्वारा प्रदान की जाती हैं और वे CURRENT LOCAL TIME (जहां आयु की जांच वास्तव में की जाती है) के लिए प्रासंगिक हैं।

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

इसलिए यदि आप जांचना चाहते हैं कि क्या कोई आपके जन्मदिन पर १ 21 या २१ या १०० से नीचे है (जन्मदिन की उत्पत्ति के समय), तो ऐसा करने का मेरा तरीका है


0

इसे इस्तेमाल करे :

<?php
  $birth_date = strtotime("1988-03-22");
  $now = time();
  $age = $now-$birth_date;
  $a = $age/60/60/24/365.25;
  echo floor($a);
?>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.