Ошибка разбора rrule, dtstart искажен
Я имею дело с повторениями и использую библиотеку 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 искажен, но, честно говоря, на данный момент я понятия не имею. Это форматирование странно.
Предложения?
1 ответ
Я понял проблему, и она довольно глупая. Так что я использую эту библиотеку для построения правила на переднем конце с помощью.js
Правило, которое выводится, выглядит следующим образом. 'FREQ=MONTHLY;DTSTART=20000201T060000Z;INTERVAL=454;WKST=SU;BYHOUR=10;BYMINUTE=47;BYSECOND=5;BYDAY=TH'
Вы не можете иметь dtstart внутри правила. Поэтому я снял и построил это с этим.
String rrule = event.getrRule().replaceAll("(DTSTART.*?;)","");
DateTimeIterator date2 = DateTimeIteratorFactory.createDateTimeIterator("RRULE:" + rrule, event.getDtStart(),DateTimeZone.forTimeZone(TimeZone.getTimeZone(event.getTimeZone())), true);
и это работает как шарм.
Надеюсь, это поможет кому-то еще!