我在 Google 日历上设置了一个测试日历。标记的日期如下:
For September
------------------------
all day events
17.09.2019 - 20.09.2019
27.09.2019 - 27.09.2019
------------------------
For October
------------------------
events with start/end time specified
17.10.2019 - 20.10.2019, from 12:00PM to 12:00PM
27.10.2019 - 27.10.2019, from 12:00PM to 12:00PM
------------------------
All dates are shown correctly in Google Calender front-end.
If I export the calender to ical / .ics file .. the all day events/dates differ from above! Events/dates with start/end time specified are shown correctly, why? And how can I fix that?
Google Calendar ics file shows ...
For September (wrong)
------------------------
DTSTART;VALUE=DATE:20190917
DTEND;VALUE=DATE:20190921 <- why September 21. must be 20.
DTSTART;VALUE=DATE:20190927
DTEND;VALUE=DATE:20190928 <- why September 28. must be 27.
For October (correct)
------------------------
DTSTART:20191017T100000Z
DTEND:20191020T100000Z
DTSTART:20191027T110000Z
DTEND:20191027T113000Z
答案1
日历工作正常。ical 中的 DTEND 字段不包含在内。
来自 icalendar.org 上的 iCal RFC 的 html 版本1:
“VEVENT” 的“DTSTART”属性指定事件的开始时间。对于重复事件,它还指定重复集中的第一个实例。“VEVENT”日历组件的“DTEND”属性指定事件的非结束时间。
这意味着 DTEND 字段不包含在事件中。在上述示例中
DTSTART;值=日期:20190917
DTEND;值=日期:20190921
该活动时间跨度为 2019 年 9 月 17 日至 2019 年 9 月 20 日,不包括 2019 年 9 月 21 日。