DateTime startDateTime = new DateTime("2020-12-16T09:00:00-03:00");
EventDateTime start = new EventDateTime()
.setDateTime(startDateTime)
.setTimeZone("Europe/Minsk");
event.setStart(start);
DateTime endDateTime = new DateTime("2020-12-16T17:00:00-03:00");
EventDateTime end = new EventDateTime()
.setDateTime(endDateTime)
.setTimeZone("Europe/Minsk");
event.setEnd(end);
List<String> recurrences = new ArrayList<>(Arrays.asList("RDATE;VALUE=PERIOD:19960403T020000Z/19960403T040000Z,19960404T010000Z/PT3H"));
设置重复出现问题。执行此代码后,以下事件中的持续时间设置与主事件中的相同,字符串中的规则被忽略。有人能帮我解决吗?
1条答案
按热度按时间pn9klfpd1#
rfc5545规定:
如果将“rdate”属性指定为时段值,则重复示例的持续时间将是由“rdate”属性指定的,而不是由“dtstart”属性定义的重复示例的持续时间。
日历api事件资源指定:
rfc5545中指定的定期事件的rrule、exrule、rdate和exdate行的列表。请注意,此字段中不允许使用dtstart和dtend行;事件开始和结束时间在“开始”和“结束”字段中指定。对于单个事件或重复事件的示例,此字段被忽略。
换句话说,
VALUE=PERIOD
似乎与google日历api不兼容,因为它覆盖了DTSTART
.我建议您查看定期事件的CalendarAPI文档,以便相应地调整定期规则。
对于java,请记住正确使用utc日期非常重要,请参见此处。