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