Google 日历 iCAL/ICS 导出全天事件中存在 BUG 吗?

Google 日历 iCAL/ICS 导出全天事件中存在 BUG 吗?

我在 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 日。

相关内容