首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RRULE google-rfc-2445

RRULE google-rfc-2445
EN

Stack Overflow用户
提问于 2013-04-17 19:27:11
回答 1查看 3K关注 0票数 3

我正在与实现google 2445 (https://code.google.com/p/google-rfc-2445/)一起工作,以生成在事件之后应该重复的日期,而不是像通常所指示的那样(RRULE),即记录时间,也就是下次抛出时计算的日期。

代码语言:javascript
复制
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

这是我正在使用的代码

代码语言:javascript
复制
 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 :00 COT 2013

这是"BYHOUR = 8;BYMINUTE = 05;BYSECOND = 10“的存在,但不是如何使用它,如果我能帮忙的话,谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-17 19:32:05

LocalDateIteratorFactory生成没有对应时间的日期,但听起来您需要DateTimes。使用DateTimeIteratorFactory代替。

另外,

代码语言:javascript
复制
LocalDate start = new LocalDate(System.currentTimeMillis());

可能不等同于

代码语言:javascript
复制
Start Date: 17/04/2013 8:30 a.m.

您可能想使用DateTime

代码语言:javascript
复制
DateTime start = new DateTime(2013, 4, 17, 8, 30, 0);

最后,如果您最后想要的是

代码语言:javascript
复制
Date f = null;

只需使用 compatibility layer即可。

不过,我建议坚持Joda的时间,因为java.util的约会是一团糟。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16068537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档