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