【发布时间】:2016-08-31 06:50:51
【问题描述】:
给定一个示例事件重复计划,其定义如下:
开始时间:2016年6月6日星期一09:00H 结束时间:2016年8月29日星期一10:00H 时间:双周这意味着,每 2 周的星期一 09:00H,直到 2016 年 8 月 29 日。但是 endTime 是在 8 月 29 日星期一,正好是新一周的开始,但应该包含在时间表中(因为它在 10:00H 结束)。所以我预计该事件会发生 7 次。
相反,如果 endTime 是 8 月 29 日 08:00H,那么我预计该事件只会发生 6 次。
现在,我使用 Joda Time 计算出现次数,如下所示:
Weeks.weeksBetween(startTime, endTime).dividedBy(multiplier).getWeeks()
当然,这给了我 6 次而不是 7 次,因为持续时间实际上只有 12 周,最后一次出现是在上周之后的星期一(在星期日结束)。所以这不算完整的一周。任何其他类型的时间表也是如此 - 月、日、年等。
如何可靠地计算两次之间事件的发生次数?
谢谢
【问题讨论】:
-
使用石英调度器,你可以这样做
nextSync = trigger.getNextFireTime(); -
@MasterAzazel 理想情况下,我不希望添加另一个库依赖项