0

我正在处理再次发生并使用 google-rfc-2445 库

此时我已经尝试了许多不同的方法,似乎我的 DateTime 变量格式不正确,我不确定发生了什么。

输出看起来像这样2015-05-05T17:11:11.000-05:00 在数据库中看起来像这样2015-05-05 22:11:11.0

我得到的错误看起来像这样

java.text.ParseException: cannot parse [[DTSTART=20150505T221111Z]] in [RRULE, recur]

我试过格式化输出但没有运气。

Date d = new Date();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");

try{
    d = df.parse(event.getDtStart().toString());
    DateIterator date = DateIteratorFactory.createDateIterator("RRULE:" + event.getrRule(), d, TimeZone.getTimeZone(event.getTimeZone()), true);
} catch (ParseException e) {
    e.printStackTrace();
}

我认为问题是我的 DTStart 格式不正确,但老实说,此时我不知道。它的格式很奇怪。

建议?

4

1 回答 1

0

我发现了这个问题,而且非常愚蠢。所以我使用这个库在前端用 .js 构建 rrule

正在输出的规则如下所示。 'FREQ=MONTHLY;DTSTART=20000201T060000Z;INTERVAL=454;WKST=SU;BYHOUR=10;BYMINUTE=47;BYSECOND=5;BYDAY=TH'

您不能在 rrule 中有 dtstart。所以我删除并用它构建它。

String rrule = event.getrRule().replaceAll("(DTSTART.*?;)","");
DateTimeIterator date2 = DateTimeIteratorFactory.createDateTimeIterator("RRULE:" + rrule, event.getDtStart(),DateTimeZone.forTimeZone(TimeZone.getTimeZone(event.getTimeZone())), true);

它就像一个魅力。

希望这对其他人有帮助!

于 2015-05-06T22:11:09.437 回答