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 2004put relativeDate("Fri", -1, 2, 2004)
-- last Friday in February 2004put 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 [EMAIL PROTECTED] 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 [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
_______________________________________________ use-revolution mailing list [EMAIL PROTECTED] 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 [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
_______________________________________________ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
