#java #timezone #timezone-offset #ical4j
Вопрос:
Используя библиотеку iCal4j, я могу создать все вхождения повторения, начиная с rrule и даты начала.
Этот код работает нормально, но проблема возникает, когда я создаю повторение, которое начинается во время летнего времени и заканчивается стандартным временем или наоборот.
Может ли iCal4j работать с переходом на летнее время? Как?
private String rrule;
private Date dtStart;
private Date until;
public ArrayList<Event> createRecurEventList() throws Exception {
ArrayList<Event> eventsList = new ArrayList<>();
RRule iCalRRule = new RRule(rrule);
DateTime dateTimeStart = new DateTime(dtStart);
DateTime untilDate = (DateTime) iCalRRule.getRecur().getUntil();
DtStart dtStartProp = new DtStart(dateTimeStart);
Duration durationProp = new Duration(java.time.Duration.ofMinutes(eventsDuration));
VEvent vEvent = new VEvent();
vEvent.getProperties().add(dtStartProp);
vEvent.getProperties().add(durationProp);
vEvent.getProperties().add(iCalRRule);
Period period = new Period(dateTimeStart, untilDate);
PeriodList periods = vEvent.calculateRecurrenceSet(period);
for (Period p : periods) {
Event event = new ELEvent(ownerId, calId, expId);
event.setDtStart(p.getStart());
event.setDtEnd(p.getEnd());
event.setDuration(p.getDuration().get(ChronoUnit.SECONDS));
eventsList.add(elEvent);
}
return elEventsList;
}