Yup. I do that a lot. Where I have an issue is dividing up a block of time into multiple segments, where the minutes may not divide evenly between all the segments. So I produced this:
function timeTable pStartTime, pStartLunch, pEndLunch, pEndTime, pItemCount set the itemDelimiter to ":" -- convert all times to minutes put item 2 of pStartTime + (item 1 of pStartTime *60) into tStartTimeMinutes put item 2 of pStartLunch + (item 1 of pStartLunch *60) into tStartLunchMinutes put item 2 of pEndLunch + (item 1 of pEndLunch *60) into tEndLunchMinutes put item 2 of pEndTime + (item 1 of pEndTime *60) into tEndTimeMinutes put tEndLunchMinutes - tStartLunchMinutes into tLunchMinutes put tEndTimeMinutes - tStartTimeMinutes - tLunchMinutes into tTotalMinutes -- calculate the minutes per item with remainder put tTotalMinutes div pItemCount into tItemMinutes put tTotalMinutes mod pItemCount into tModMinutes -- if there was no lunch times provided, make some up if pStartLunch is empty then put tStartTimeMinutes + tItemMinutes into tStartLunchMinutes put tStartLunchMinutes into tEndLunchMinutes end if repeat with counter = 1 to pItemCount put tStartTimeMinutes into aTimeTable [counter] [1] put tStartTimeMinutes + tItemMinutes into tNextTimeMinutes -- distribute spare minutes if tModMinutes >0 then add 1 to tNextTimeMinutes subtract 1 from tModMinutes end if if tLunchMinutes > 0 then if tNextTimeMinutes >= tStartLunchMinutes then put tStartLunchMinutes into aTimeTable [counter] [2] put tEndLunchMinutes into aTimeTable [counter] [3] add tLunchMinutes to tNextTimeMinutes put 0 into tLunchMinutes else put 0 into aTimeTable [counter] [2] put 0 into aTimeTable [counter] [3] end if else put 0 into aTimeTable [counter] [2] put 0 into aTimeTable [counter] [3] end if put tNextTimeMinutes into aTimeTable [counter] [4] -- calculate total minutes for this record put (aTimeTable [counter] [4] - aTimeTable [counter] [1]) - \ (aTimeTable [counter] [3] - aTimeTable [counter] [2]) \ into aTimeTable [counter] [5] put tNextTimeMinutes into tStartTimeMinutes end repeat -- convert minutes back to seconds put the keys of aTimeTable into tTableKeys sort lines of tTableKeys numeric ascending repeat for each line tKey in tTableKeys put aTimeTable [tKey] into aTimeRecord put the keys of aTimeRecord into aRecordKeys repeat for each line tRecordKey in aRecordKeys put aTimeRecord [tRecordKey] into tTime if tTime = 0 then put empty into aTimeTable [tKey] [tRecordKey] else put tTime div 60 & ":" & tTime mod 60 into tTime put formatTime(tTime, "sql time") into tTime put char 1 to 5 of tTime into aTimeTable [tKey] [tRecordKey] end if end repeat end repeat return aTimeTable end timeTable function formatTime theTime, theFormat /* accepts any valid time and returns the form of the time specified in the second parameter. The valid formats are: sql time: hh:mm:ss (Note: combining sql date from the formatDate() function with the sql time will produce a valid SQL date time type). short time: LC short time format abbreviated time: LC abbr time format (same as short time) long time: LC long time format seconds: the number of seconds since the prior midnight military: the military time 00:00 - 23:59 */ if theTime is empty then return empty set the numberformat to "00" switch theFormat case "sql time" convert theTime to dateitems put (item 4 of theTime +0) & ":" & \ (item 5 of theTime +0) & ":" & \ (item 6 of theTime +0) into theTime break case "short time" convert theTime to short time break case "abbreviated time" convert theTime to abbreviated time break case "long time" convert theTime to long time break case "seconds" convert theTime to seconds break case "military" set the itemdelimiter to ":" if theTime contains "PM" then add 12 to item 1 of theTime end if put word 1 of item 2 of theTime into item 2 of theTime break end switch return theTime end formatTime > On Apr 27, 2017, at 13:27 , Mike Kerner via use-livecode > <use-livecode@lists.runrev.com> wrote: > > On the topic of keeping LC stupid-simple, here's of one of those ways that > LC makes ugly math fun: > #<compute last date of previous month> > > put the short date into theDate > convert theDate to dateItems > put 0 into item 3 of theDate > convert theDate to short date > put theDate _______________________________________________ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode