Фильтрация текущего события iCal4j

Я пытаюсь использовать библиотеку ical4j, чтобы найти текущее событие (или, по крайней мере, события, происходящие сегодня) в файле ical, который содержит повторяющиеся события. Мне удалось построить и распечатать все события в календаре, но я получаю

java.lang.IllegalArgumentException: Range start must be before range end

во время выполнения. Это странно, потому что мое правило периода явно начинается до того, как оно заканчивается. Я много читал и пробовал разные вещи, но я не в курсе. Вот суть того, чего я пытаюсь достичь:

private class CurrentShow extends AsyncTask<String, Void, String> {
    @Override
    protected String doInBackground(String... urls) {
        //params come from execute() call, params[0] is url
        InputStream is = null;
        net.fortuna.ical4j.model.Calendar calendar = new net.fortuna.ical4j.model.Calendar();
        try {

            is = new URL(urls[0]).openStream();
            CalendarBuilder builder = new CalendarBuilder();
            try {
                calendar = builder.build(is);
            } catch (Exception e) {
            }

            for (Iterator i = calendar.getComponents().iterator(); i.hasNext(); ) {
                Component component = (Component) i.next();
                System.out.println("Component [" + component.getName() + "]");
                for (Iterator j = component.getProperties().iterator(); j.hasNext(); ) {
                    Property property = (Property) j.next();
                    System.out.println("Property [" + property.getName() + ", " + property.getValue() + "]");
                }
            }

            java.util.Calendar today = java.util.Calendar.getInstance();
            today.set(java.util.Calendar.HOUR_OF_DAY, 0);
            today.clear(java.util.Calendar.MINUTE);
            today.clear(java.util.Calendar.SECOND);

            // create a period starting now with a duration of one (1) day..
            Period period = new Period(new DateTime(today.getTime()), new Dur(1, 0, 0, 0));
            Filter filter = new Filter(new Rule[] {new PeriodRule(period)}, Filter.MATCH_ALL);

            Collection eventsToday = filter.filter(calendar.getComponents(Component.VEVENT));

Любая помощь будет оценена. Благодарю.

0 ответов

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