Hi Andrew,

<< Using Rebol (of course!), how would I convert a date of birth to an age
in
years, months and days? >>

Well, it's not exactly what you asked for, but it's a start. Maybe I'll mod
it later tonight.


(watch for wrap)


days-between: func [date-1[date!] date-2[date!]][
    return date-1 - date-2
]

persons-age: func [
    "Return a persons age, in years."
    b-day [date!]
    /precise   "Include decimal portion of age."
    /days      "Return result as how many *days* old the person is."
    /yrs-days  "Return result as number of years and days (2 item block)."
    /on        "Use alternate date instead of current date, to figure age."
        date
    /local result
][
    date: any [date now]
    if days     [return days-between date b-day]
    if precise  [return (days-between date b-day) / 365.25]
    if yrs-days [return compose [(to-integer date - b-day / 365.25)(date -
b-day // 365.25)]]
    ; otherwise, take away 1 year if their birthday hasn't come yet this
year.
    return date/year - b-day/year - either any [
        (date/month > b-day/month) all [
            (date/month = b-day/month)(date/day >= b-day/day)]] [0][1]
]

persons-age 23-dec-1964
persons-age/days 23-dec-1964
persons-age/yrs-days 23-dec-1964
persons-age/precise 23-dec-1964
persons-age/on-date 23-dec-1964 23-dec-2001

--Gregg

-- 
To unsubscribe from this list, please send an email to
[EMAIL PROTECTED] with "unsubscribe" in the 
subject, without the quotes.

Reply via email to