如何检查DateTime是使用Joda Time发生的重复事件?

我有一个代表重复事件开始的DateTime 。 A Days (每日期)将代表经常性的时期。 我认为这个反复出现的事件永远不会停止。

 from = "2013-06-27" period = 3 days nextOccurence will be "2013-06-30", "2013-07-03", "2013-07-06", and so on. "2013-07-03" is an occurence but "2013-07-04" isn't an occurence. 

我想知道在性能方面最好的方法是确定DateTime是否是重复事件的出现? 从长远来看,该计划将需要检查“2014-07-03”或“2015-07-03”是否出现。

这将在我的机器上以180毫秒的秒数运行所有五项检查。 或者大约27支/秒,你在那里检查未来300年的日期。

 @Test public void isOccurrence() { long startTime = System.currentTimeMillis(); assertTrue(isOccurrence(new DateMidnight(2010, 1, 10), 3, new DateTime(2010, 1, 19, 0, 0))); assertFalse(isOccurrence(new DateMidnight(2010, 1, 10), 3, new DateTime(2010, 1, 18, 0, 0))); assertTrue(isOccurrence(new DateMidnight(2010, 1, 10), 3, new DateTime(2310, 1, 19, 0, 0))); assertFalse(isOccurrence(new DateMidnight(2010, 1, 10), 3, new DateTime(2310, 1, 20, 0, 0))); assertTrue(isOccurrence(new DateMidnight(2010, 1, 10), 3, new DateTime(2010, 1, 10, 0, 0))); System.out.println("elapsed=" + (System.currentTimeMillis() - startTime)); } public boolean isOccurrence(DateMidnight startDate, int dayIncrement, DateTime testTime) { DateMidnight testDateMidnight = testTime.toDateMidnight(); while (startDate.isBefore(testDateMidnight)) { startDate = startDate.plusDays(dayIncrement); } return startDate.equals(testDateMidnight); } 

您始终可以在Calendar类中使用add方法。

你可以做以下事情 –

 Date date = "2013-06-27" ; Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.add(Calendar.DATE, 3); // add 3 days date = cal.getTime(); 

等等…