Recurring Dates Script

Jim Carwardine JimCarwardine at OwnYourFuture-net.com
Mon Jan 19 07:49:04 EST 2004


Hey, that's wonderful Sarah.  Thanks.  I was just getting to that now that
we've put a Band-Aid on the scrolling group problem... Jim

on 1/18/04 9:44 PM, Sarah Reichelt wrote:

> Hi Jim,
> 
> Coincidentally, I needed exactly the same sort of thing myself last
> week, so here is a script to get you started:
> 
> Here are some usage examples:
> 
> put relativeDate("Mon", 3, 1, 2004)
> -- 3rd Monday in January 2004
> 
> put relativeDate("Fri", -1, 2, 2004)
> -- last Friday in February 2004
> 
> put relativeDate("Tue", "First",  11,  2004)
> -- 1st Tuesday in November - for the Aussies out there :-)
> 
> 
> -- pDay is the abbreviated system day name (Mon, Tue, Wed)
> -- pIndex is First, Second, Third, Fourth, Last
> -- or 1, 2, 3, 4 for 1st, 2nd, 3rd & 4th and -1 for last
> -- pMonth & pYear must be numeric
> --
> function relativeDate pDay, pIndex, pMonth, pYear
>  -- convert the day name to a number
>  put the abbrev system weekDayNames into tDayList
>  get lineOffset(pDay, tDayList)
>  if it = 0 then return empty
>  put it into tDayNum
> 
>  -- find first whatever day in the month
>  put pMonth & "/1/" & pYear into firstDate
>  convert firstDate from short English date to dateItems
>  put last item of firstDate into firstDayNum
>  put tDayNum - firstDayNum into dayDiff
>  if dayDiff < 0 then add 7 to dayDiff
>  add dayDiff to item 3 of firstDate
>  convert firstDate to seconds
>  convert firstDate to dateItems
> 
>  -- add weeks as necessary
>  switch pIndex
>  case "First"
>  case "1"
>    break
>  case "Second"
>  case "2"
>    add 7 to item 3 of firstDate
>    break
>  case "Third"
>  case "3"
>    add 14 to item 3 of firstDate
>    break
>  case "Fourth"
>  case "4"
>    add 21 to item 3 of firstDate
>    break
>  case "Fifth"
>  case "5"
>    add 28 to item 3 of firstDate
>    break
>  case "Last"
>  case "-1"
>    -- try week 5 and if that doesn't work, use week 4
>    put firstDate into testDate
>    add 28 to item 3 of testDate
>    convert testDate to seconds
>    convert testDate to dateItems
>    if item 2 of testDate = pMonth then
>      put testDate into firstDate
>    else
>      add 21 to item 3 of firstDate
>    end if
>    break
>  end switch
> 
>  -- firstDate is now in dateItems format
>  convert firstDate to short system date
>  return firstDate
> end relativeDate
> 
> 
> Cheers,
> Sarah
> sarahr at genesearch.com.au
> http://www.troz.net/Rev/
> 
> On 12 Jan 2004, at 1:04 pm, Jim Carwardine wrote:
> 
>> Thanks, Sarah.  I'm familiar with dateItems from HC.  Even with
>> dateItems,
>> checking on things like the second Tuesday of every month is tricky.
>> I was
>> hoping that somebody might have done some of that... Jim
>> 
>> on 1/11/04 6:21 PM, Sarah Reichelt wrote:
>> 
>>> Hi Jim,
>>> 
>>> I don't know exactly what sort of recurring dates you are planning,
>>> but
>>> you will find that using the dateItems format works really well for
>>> date calculations:
>>> 
>>> Try something like this:
>>> put the seconds into theDate
>>> convert theDate to dateItems
>>> -- 2004,1,12,8,16,46,2
>>> -- see the docs for dateItems to check what each item is.
>>> 
>>> Now you can edit any of these items WITHOUT having to worry about
>>> whether it results in a correct date. When you convert it back, the
>>> engine will make it into a real date.
>>> 
>>> add 18 to item 2 of theDate      -- item 2 = month, so move 18 months
>>> forward
>>> -- 2004,19,12,8,18,26,2
>>> convert theDate to long date
>>> -- Tuesday, July 12, 2005
>>> 
>>> Hope this helps,
>>> Sarah
>>> 
>>> On 12 Jan 2004, at 1:59 am, Jim Carwardine wrote:
>>> 
>>>> Has anyone written a script that handles recurring dates like Outlook
>>>> or
>>>> Entourage do?  Jim
>>>> -- 
>>>> 
>>>> OYF is... Highly resourceful people working together.
>>>> <http://www.OwnYourFuture-net.com>
>>>> 
>>>> Own Your Future Consulting Services Limited,
>>>> 1959 Upper Water Street, Suite 407, Halifax, Nova Scotia. B3J 3N2
>>>> Info Line: 902-823-2477, Phone: 902-823-2339. Fax: 902-823-2139
>>>> 
>>>> 
>>>> 
>>>> 
>>>> _______________________________________________
>>>> use-revolution mailing list
>>>> use-revolution at lists.runrev.com
>>>> http://lists.runrev.com/mailman/listinfo/use-revolution
>>>> 
>>>> 
>>>> 
>>> 
>>> _______________________________________________
>>> use-revolution mailing list
>>> use-revolution at lists.runrev.com
>>> http://lists.runrev.com/mailman/listinfo/use-revolution
>> 
>> -- 
>> 
>> OYF is... Highly resourceful people working together.
>> <http://www.OwnYourFuture-net.com>
>> 
>> Own Your Future Consulting Services Limited,
>> 1959 Upper Water Street, Suite 407, Halifax, Nova Scotia. B3J 3N2
>> Info Line: 902-823-2477, Phone: 902-823-2339. Fax: 902-823-2139
>> 
>> 
>> 
>> _______________________________________________
>> use-revolution mailing list
>> use-revolution at lists.runrev.com
>> http://lists.runrev.com/mailman/listinfo/use-revolution
>> 
>> 
>> 
> 
> _______________________________________________
> use-revolution mailing list
> use-revolution at lists.runrev.com
> http://lists.runrev.com/mailman/listinfo/use-revolution

-- 

OYF is... Highly resourceful people working together.
<http://www.OwnYourFuture-net.com>

Own Your Future Consulting Services Limited,
1959 Upper Water Street, Suite 407, Halifax, Nova Scotia. B3J 3N2
Info Line: 902-823-2477, Phone: 902-823-2339. Fax: 902-823-2139





More information about the use-livecode mailing list