我正在使用google-rfc-2445(https://code.google.com/p/google-rfc-2445/)的实现来生成应该在事件发生后重复的日期,而不是规则(RRULE)表示重复已经完成时间,即下次投掷时计算的日期。
example:
Start Date: 17/04/2013 8:30 a.m.
Rule: "RRULE: FREQ = DAILY; UNTIL = 20130430T083000Z, INTERVAL = 1"
Expected Result, Next Repetition: 4/18/2013 8:30 a.m.
Result Obtained, Next Repetition: 4/18/2013 00 00 00
这是我正在使用的代码
LocalDate start = new LocalDate(System.currentTimeMillis());
String ical = "RRULE:FREQ=DAILY;"
+ "UNTIL=20130430T083000Z;"
+ "INTERVAL=1;";
//Next Notification
Date f = null;
for (LocalDate date
: LocalDateIteratorFactory.createLocalDateIterable(ical, start, false)) {
f = date.toDateTimeAtCurrentTime().toLocalDate().toDate();
break;
}
System.out.println("Next = " + f);
打印结果是 Next = Wed Apr 17 00:00:00 COT 2013
存在“BYHOUR = 8; BYMINUTE = 05; BYSECOND = 10”而不是如何使用它,如果我能伸出援手,谢谢。
答案 0 :(得分:4)
LocalDateIteratorFactory
生成没有相应时间的日期,但听起来你想要DateTimes。请改用DateTimeIteratorFactory
。
此外,
LocalDate start = new LocalDate(System.currentTimeMillis());
可能不等同于
Start Date: 17/04/2013 8:30 a.m.
您可能想要使用DateTime
DateTime start = new DateTime(2013, 4, 17, 8, 30, 0);
最后,没有理由使用Joda时间兼容性层,如果你想要的最终是
Date f = null;
只需使用java.util
compatibility layer。
我建议坚持Joda时间,因为java.util
日期很糟糕。