new date conversion bug?
J. Landman Gay
jacque at hyperactivesw.com
Thu Jan 31 16:36:03 EST 2008
Devin Asay wrote:
> I am working on a scheduling program that includes the ability to
> schedule an event every other week over a specific time period. To
> determine whether the event should occur during any given week during
> the time period I do some simple date math to figure out whether a
> multiple of 14 days have passed since the first occurrence of the
> event. Let's say I've scheduled an event for every other week on Friday,
> beginning January 11, 2008 and ending April 11, 2008. For any given week
> on my calendar I can calculate whether the event should show up using
> this algorithm (pseudocode):
>
> get the date of the first occurrence of the event and convert it to seconds
> get the date of that the event should fall on if this week falls in the
> every-other-week pattern, convert it to seconds
> subtract date 2 from date 1
> divide the difference by (60*60*24*14) --the number of seconds in 14 days
> if the difference divides evenly (modulo division = 0) then the event
> should occur in the week in question
>
> This works fine for a few weeks, but then inexplicably fails. For
> example, Jan. 11, Jan. 25, Feb. 8, Feb. 22, and March 7 all show the
> event properly. But anything after that fails; i.e., March 21, April 4.
I'm not sure why it would fail; that one hour difference is suspiciously
like a time zone error or a daylight savings time error (which would
still be a bug, if that's what's happening.)
But changing the calculation to use dateitems seems to work okay (and
avoids all those inscrutable big numbers):
put "1/11/08" into tDate
put "4/15/08" into tStopDate
convert tStopDate to seconds
repeat
convert tDate to dateitems
add 14 to item 3 of tDate
convert tDate to seconds
if tDate > tStopDate then exit repeat
convert tDate to short date -- if you need that
put cr & tDate after fld 1 -- or fill your calendar field here
end repeat
--
Jacqueline Landman Gay | jacque at hyperactivesw.com
HyperActive Software | http://www.hyperactivesw.com
More information about the use-livecode
mailing list