# Calculating dates

Greg Wills gwills at ozemail.com.au
Tue Apr 29 04:35:01 EDT 2003

```Thanks Yves for this script. I did ask for a simple solution, wow this
is quite something! I have had a look at it and an error or two popped
up, so I will have a look at it more closely so that I can understand
fully what you have written. I appreciate you putting me onto the right
track. If I get stuck I may have to get back to you in a week or so.
Thanks.

regards

Greg

> Message: 8
> Date: Sun, 27 Apr 2003 09:04:05 +0200
> To: use-revolution at lists.runrev.com
> From: yves COPPE <yvescoppe at skynet.be>
> Subject: Re: Calculating dates
> Reply-To: use-revolution at lists.runrev.com
>
>> Hi everyone
>>
>> I have been playing with this but can't get it to work. I want to
>> calculate ages of students from dates of birth and current date. If
>> I convert these dates to seconds, subtract the birth date from the
>> date entered - is there a simple way to then convert this number
>> into years, months and days?
>>
>> cheers
>>
>> Greg
>>
>
>
> Here is a script :
>
>
>
> function whichage fromwhich,towhich
>    set the centuryCutoff to 01
>    set useSystemDate to true
>    if param(1) = "" then exit to top
>    put param(1) into startdate
>    put startdate into temp
>    get last char of temp
>    repeat until it is not a integer
>      get last char of temp
>      delete last char of temp
>    end repeat
>    if (it ‚ "-") and (it ‚ "/") then exit to top
>    if param(2) = "" then
>      put mi_shortdate() into enddate
>    else put param(2) into enddate
>    put enddate into temp
>    get last char of temp
>    repeat until it is not a integer
>      get last char of temp
>      delete last char of temp
>    end repeat
>    if (it ‚ "-") and (it ‚ "/") then exit to top
>    convert startdate to dateitems
>    convert enddate to dateitems
>    put (item 3 of enddate - item 3 of startdate) into diffjour
>    if diffjour < 0 then
>      add "1" to item 2 of startdate
>      get item 2 of enddate
>      if (it is in "1,3,5,7,8,10") or (it= "12") then put "31" into
> correction
>      else if (it is in "4,6,9,11") then put "30" into correction
>      else if item 1 of enddate mod 4 = 0 then put "29" into correction
>      else put "28" into correction
>      add correction to item 3 of enddate
>      put (item 3 of enddate - item 3 of startdate) into diffjour
>    end if
>    put (item 2 of enddate - item 2 of startdate) into diffmois
>    if diffmois < 0 then
>      add "1" to item 1 of startdate
>      put (item 2 of enddate) + 12 into item 2 of enddate
>      put (item 2 of enddate - item 2 of startdate) into diffmois
>    end if
>    put (item 1 of enddate - item 1 of startdate) into diffan
>    return diffan&","&diffmois&","&diffjour
> end whichage
>
>
> Hope this help.
> --
> Greetings.
>
> Yves COPPE
>
> Email : yvescoppe at skynet.be
>

```