age { ; Change this to your birthday in the same format. var %bday = April 09, %year = 1987 ; Want accuracy? dd/mm/yyyy bitch :P var %birthdate 09/04/1987 ; Do not edit this unless you know what you're doing. var %seconds = $calc($ctime - $ctime(%bday %year)) var %timeu = $calc($ctime(%bday $asctime(yyyy)) - $ctime) var %timey = $calc($asctime(yyyy) - %year) if (%timeu < 0) { var %timeu = $calc($ctime(%bday $calc($asctime(yyyy) + 1)) - $ctime) var %timey = $calc($calc($asctime(yyyy) + 1) - %year) } ; Adding correct support for 'th' var %temps = %timey, %temp = %timey while (%temp > 0) { %temp = $int($calc(%temps / 10)) %temps = $calc(%temps % 10) } if ( %temps == 1 ) var %th st else if ( %temps == 2 ) var %th nd else if ( %temps == 3 ) var %th rd else var %th th me is exactly $agex(%birthdate) years old. It is exactly $duration(%timeu) until my %timey $+ %th birthday } ; $agex(dd/mm/yyyy) - returns age based on specified birthdate. agex { var %tmp1 $+($gettok($$1,1,47),/,$gettok($1,2,47),/) var %tmp2 $asctime(yyyy), %tmp3 00:00:00 var %bday = $+(%tmp1,%tmp2), %lastbd $+(%tmp1,$calc(%tmp2 -1)) if ($$ctime(%bday %tmp3) <= $ctime) { %lastbd = %bday %bday = $+(%tmp1,$calc(%tmp2 +1)) } %tmp1 = $calc($ctime(%bday %tmp3) - $ctime) %tmp2 = $calc($ctime(%bday %tmp3) - $ctime(%lastbd %tmp3)) %tmp3 = $calc($ctime(%lastbd %tmp3) - $$ctime($1 %tmp3)) %tmp3 = $round($calc(%tmp3 / 31556952),0) return $calc(%tmp3 + (1- %tmp1 / %tmp2)) }