On May 15, 2009, Kay C Lan wrote:

Peter,

I gave your function a try and it gave the wrong answer. I had a quick look and somewhere along the line it converted 2009 to 1909, so I ended up with a negative age. After some of the earlier posts, I guess it has potential for
a female audience.

Here's my attempt:  <snip>

Hmmm. Never gotten the wrong answer in my use of it. Ahhh, I see. There's an error in the function handler

function getFullYr tDate
-- works only for people < 100 years old
set the itemDelimiter to "/"
put the last item of tDate into yr
if the number of chars of yr = 2 then
  if yr >= last item of the short date then  -- wrong comparator
    put "19" before yr
  else
    put "20" before yr
  end if
end if
return yr
end getFullYr

"if yr >= last item of the short date then" should be "if yr > last item of the short date then"

That's what I get for trying to not embarrass myself -- I cleaned up working code for my posting to the list, so it looked less inefficient, but I didn't test the changes thoroughly.

Actually, I really like Mark Schonewille's version, much more compact. I have modified it as below so allow computing the age of any person as of an arbitrary date (defaults to today):

function doAge tDate,asOf
   convert tDate to dateItems
   if asOf = empty then
      put the date into asOf
   end if
   convert asOf to dateitems
   put item 1 of asOf - item 1 of tDate - 1 into tAge
   put item 1 of asOf into item 1 of tDate
   convert tDate to seconds
   convert asOf to seconds
   if tDate <= asOf then add 1 to tAge
   return tAge
end doAge

This seems to work well. Anyone find a problem with it?

-- Peter

Peter M. Brigham
pmb...@gmail.com
http://home.comcast.net/~pmbrig


_______________________________________________
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to