Ошибка разбора 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);

и это работает как шарм.

Надеюсь, это поможет кому-то еще!

Другие вопросы по тегам