| 12345678910111213141516171819202122232425262728 |
- local function getJobSchedulerEveryNextMillis(prevMillis, every, now, offset, startDate)
- local nextMillis
- if not prevMillis then
- if startDate then
- -- Assuming startDate is passed as milliseconds from JavaScript
- nextMillis = tonumber(startDate)
- nextMillis = nextMillis > now and nextMillis or now
- else
- nextMillis = now
- end
- else
- nextMillis = prevMillis + every
- -- check if we may have missed some iterations
- if nextMillis < now then
- nextMillis = math.floor(now / every) * every + every + (offset or 0)
- end
- end
- if not offset or offset == 0 then
- local timeSlot = math.floor(nextMillis / every) * every;
- offset = nextMillis - timeSlot;
- end
- -- Return a tuple nextMillis, offset
- return math.floor(nextMillis), math.floor(offset)
- end
|