在日期范围之间寻找修复

问题描述 投票:0回答:1

我目前在我的应用程序中使用jfxtras iCalendarAgenda。我需要从vcalendar中检索给定日期范围之间的事件列表。我需要它来返回具有实际日期时间的事件,而不是在日期范围之间发生重复的事件。

我尝试过使用ical4j及其过滤库。不幸的是,我试图正确设置这个插件是不成功的,因为它似乎无法找到它需要的依赖项。 (我尝试将它和它的依赖项放在我的pom.Xml文件中)。我还发现了很多递归规则解析器,但不清楚它们是否支持jfxtras使用的其他参数,例如recurrence ID和exdates。我还发现使用vfreebusy对象可能会这样做,但我找不到更多关于此的信息。最后我知道jfxtras必须在某个地方这样做,所以它知道要显示什么,但我找不到它的位置,我无法找到一个方法,我可以用它们来做。

寻找可以执行此操作的库或指向如何设置ical4j的链接。因为目前还不清楚如何使用maven进行设置。

maven icalendar rfc5545 ical4j jfxtras
1个回答
1
投票

我写了iCalendarAgenda。它附带了一个iCalendar库,名为iCalendarFX(在我的Github帐户中也称为icalendar-lib),它可以满足您的需求。我不知道ical4j是否有能力。

使用iCalendar,我会从VCalendar过滤事件流并过滤那些符合您要求的事件。它会是这样的:

VCalendar vCalendar = VCalendar.parse(content); // replace with your vCalendar
    LocalDateTime startTime = null; // set somewhere
    LocalDateTime endTime = null; // set somewhere
    List<VEvent> eventsBetweenStartAndEnd = vCalendar.getVEvents().stream()
        .filter(e -> {
            LocalDateTime myStartLocalDateTime = LocalDateTime.from(e.getDateTimeStart().getValue());
            boolean isOnOrAfterStart = ! myStartLocalDateTime.isBefore(startTime);
            boolean isOnOrBeforeEnd = ! myStartLocalDateTime.isAfter(endTime);
            return isOnOrAfterStart && isOnOrBeforeEnd;
        })
        .collect(Collectors.toList());
© www.soinside.com 2019 - 2024. All rights reserved.