我正在处理重新发生和使用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格式不正确但老实说此时我不知道。它的格式很奇怪。
建议?
答案 0 :(得分:0)
我想出了这个问题,而且非常愚蠢。所以我使用this library用.js
在前端构建rrule正在输出的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);
它就像一个魅力。
希望这有助于其他人!