Iseng-iseng lagi memikirkan cara menghitung umur seseorang hasil dari mysql datetime, gampang-gampang susah.

Nemu dari om gugel cara yang simple (tapi kurang tepat)

$tgl = date('Y-m-d', strtotime($tgl_lahir));
$umur = floor(time() - strtotime($tgl))/(60*60*24*365);
echo $umur;

Mengurangi unix time sekarang dengan unix time dari $tgl_lahir (format dari mysql datetime ‘Y-m-d H:i:s’), kurang tepat karena membagi selisih unix time dengan asumsi pertahun ada 365 hari, sedangkan dalam setahun terkadang 366 hari.

Cara yang lebih tepat :
Masih dari om gugel

$date1 = new DateTime(date('Y-m-d', strtotime($tgl_lahir)));
$date2 = new DateTime(date('Y-m-d'));
$interval = $date1->diff($date2);
echo "difference " . $interval->y . " years, " . $interval->m." months, ".$interval->d." days ";

namun fungsi dari php DateTime::diff hanya dapat berjalan pada PHP 5 >= 5.3.0

Lalu saya membuat yang dapat berjalan untuk PHP 4 ke atas

list($thn_skrg, $bln_skrg, $tgl_skrg) = explode('-', date('Y-m-d'));
list($thn_lhr, $bln_lhr, $tgl_lhr) = explode('-', date('Y-m-d', strtotime($tgl_lahir)));
$umur = $thn_skrg - $thn_lhr;
		
if($bln_skrg < $bln_lhr)
 $umur--;
else if(($bln_skrg == $bln_lhr) && ($tgl_skrg < $tgl_lhr))
 $umur--;
echo $umur;

Meskipun agak panjang, namun hasil pemikiran sendiri. :D

Bacaan :
http://stackoverflow.com/questions/676824/how-to-calculate-the-difference-between-two-dates-using-php

Print Friendly