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 [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

Reply via email to