查找日期范围之间的事件
Finding vevents between date range
我目前在我的应用程序中使用 jfxtras iCalendarAgenda。我需要从 vcalendar 中检索给定日期范围内的事件列表。我需要它 return 具有实际日期时间的事件,而不是在日期范围内重复发生的事件。
我试过使用 ical4j 和他们的过滤器库。不幸的是,我没有成功地尝试正确设置这个插件,因为它似乎找不到它需要的依赖项。 (我试着把它和它的依赖关系放在我的 pom.Xml 文件中)。我还发现了很多重复规则解析器,但不清楚它们是否支持 jfxtras 使用的 vevents 中的其他参数,例如重复 ID 和 exdates。我还发现可以使用 vfreebusy 对象来执行此操作,但我找不到这方面的更多信息。最后我知道 jfxtras 必须在某个地方执行此操作,因此它知道要显示什么,但我找不到它在哪里,也无法从他们那里找到可以执行此操作的方法。
寻找可以执行此操作的库或 link 如何设置 ical4j。因为目前还不清楚如何使用 maven 进行设置。
我写了 iCalendarAgenda。它附带一个名为 iCalendarFX 的 iCalendar 库(在我的 Github 帐户中也称为 icalendar-lib),它可以满足您的需求。不知道ical4j行不行
使用 iCalendarFX,我将从 VCalendar 中筛选出 Vevent 流,并筛选出满足您要求的那些。它会是这样的:
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());
我目前在我的应用程序中使用 jfxtras iCalendarAgenda。我需要从 vcalendar 中检索给定日期范围内的事件列表。我需要它 return 具有实际日期时间的事件,而不是在日期范围内重复发生的事件。
我试过使用 ical4j 和他们的过滤器库。不幸的是,我没有成功地尝试正确设置这个插件,因为它似乎找不到它需要的依赖项。 (我试着把它和它的依赖关系放在我的 pom.Xml 文件中)。我还发现了很多重复规则解析器,但不清楚它们是否支持 jfxtras 使用的 vevents 中的其他参数,例如重复 ID 和 exdates。我还发现可以使用 vfreebusy 对象来执行此操作,但我找不到这方面的更多信息。最后我知道 jfxtras 必须在某个地方执行此操作,因此它知道要显示什么,但我找不到它在哪里,也无法从他们那里找到可以执行此操作的方法。
寻找可以执行此操作的库或 link 如何设置 ical4j。因为目前还不清楚如何使用 maven 进行设置。
我写了 iCalendarAgenda。它附带一个名为 iCalendarFX 的 iCalendar 库(在我的 Github 帐户中也称为 icalendar-lib),它可以满足您的需求。不知道ical4j行不行
使用 iCalendarFX,我将从 VCalendar 中筛选出 Vevent 流,并筛选出满足您要求的那些。它会是这样的:
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());