Losing track of time

Robert Brenstein rjb at rz.uni-potsdam.de
Mon Aug 11 18:11:00 EDT 2003


>On Monday, August 11, 2003, at 02:04 PM, Robert Brenstein wrote:
>
>>convert it to dateitems
>>add 1 to item 5 of it # up hour to next
>>if item 5 of it is 24 then # account for crossing midnight
>>   put zero into item 5 of it
>>   add 1 to item 4 of it
>>   ## similar checks for month and year overflow here
>>end if
>>put zero into item 6 of it # zero out minutes
>>convert it to seconds
>
>get (round(it/3600) + 1)*3600
>
>Would this work?
>
>Dar Scott
>

Nop. 'It' contains dateitems (yyyy,mm,dd,hh,mm,ss,w) not seconds at 
this point. But oops, my item refs are wrong. Here is the corrected 
code.

on fullhourchime
   play sound # first play
   get seconds()
   convert it to dateitems
   add 1 to item 4 of it # up hour to next
   if item 4 of it is 24 then # account for crossing midnight
     put zero into item 4 of it
     add 1 to item 3 of it
     if item 3 of it is ...
       ## check for month and then year overflow here
     end if
   end if
   put zero into item 5 of it # zero out minutes
   put zero into item 6 of it # zero out seconds
   convert it to seconds
   send fullhourchime to me in (it-seconds())
end fullhourchime

What this code does (for those less familiar with date/time 
conversions) is: it first gets the current seconds and converts them 
to dateitems. Then, it is a matter of increasing hour by 1 and 
setting minutes and seconds to 0. We have now next full hour, which 
we convert back to seconds and then ask to 'send' in whatever is the 
difference between the calculated seconds for next full hour and 
current seconds.

The only complication is that one needs to account for midnight (end 
of the day), end of the month, and end of the year. May be there is a 
way to avoid this somehow.

Robert



More information about the use-livecode mailing list