All pastes #216789 Raw Edit

Ultimate Age Script

public text v1 · immutable
#216789 ·published 2006-10-23 09:05 UTC
rendered paste body
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))
}