Google 日历无法识别不在整点的 EXDATES?

Google Calendar not recognizing EXDATES that aren't on the hour?

我正在生成一个应忽略节假日事件的 ics,并使用 EXDATE 参数来完成此操作。

我的代码在 Outlook 中工作,它只需要为 EXDATE 确定日期,但是 Google 日历要求时间也存在。

不幸的是,Google 日历无法识别我对中午之后发生的事件的 EXDATES。

    while(start < end)
    {
        if(iSholiday(new Date(start)))
        {
        //Google Calendar only recognizes the Exdate parameter if it's at the same time as the regular event.
        start.setHours(eventTime.getHours(), eventTime.getMinutes());   
        exDateStr += start.toISOString() +','; //Of the format 2015-09-07T17:40:00.000Z
    }
    //Advance day to tomorrow
    start = new Date(start.setDate(start.getDate() + 1));

同样,这适用于早上发生的事件,但不适用于中午之后发生的事件。

编辑: 我让它返回了正确的日期,但仍然只表现得好像应该忽略中午之前的日期。

如图:我的每个 exdate 字符串。只有 8:00 和 11:00 有效

图片:(可能)与 Google 日历一起使用的其他 exdate 字符串。

编辑 2 我还注意到我在中午之后的所有活动都有分钟,而早上的活动则没有。 Google 似乎无法识别不在整点发生的事件。

编辑 3 我已经包含了我的 RRULE。

var rule = {
    freq: "WEEKLY",
    until: new Date(end.setHours(1,0)),
};

...[省略代码]

        var calendarEvent = [
            'BEGIN:VEVENT',
            'CLASS:PUBLIC',
            'TZID:US/Central', //Force Central
            'DESCRIPTION:' + description,
            'DTSTART;VALUE=DATE-TIME:' + start,
            'DTEND;VALUE=DATE-TIME:' + end,
            'LOCATION:' + location,
            'SUMMARY;LANGUAGE=en-us:' + subject,
            'EXDATE;TZID=US-Central:' + exdates,  //Force Central, exdates is a formatted string containing dates to skip (Holidays), as per the RRUle standard.
    'TRANSP:TRANSPARENT',
            'END:VEVENT'
        ];
       ];

        if (rruleString) {
          calendarEvent.splice(4, 0, rruleString);//Example: RRULE:FREQ=WEEKLY;UNTIL=20151212T000000Z;BYDAY=TU,TH
        }

        calendarEvent = calendarEvent.join(SEPARATOR);

        calendarEvents.push(calendarEvent);
        return calendarEvent;
    },

编辑 4 我已经包含了 12:40 事件的 Vcalendar:

BEGIN:VEVENT
CLASS:PUBLIC
TZID:US/Central
DESCRIPTION:Class
RRULE:FREQ=WEEKLY;UNTIL=20151212T000000Z;BYDAY=TU,TH
DTSTART;VALUE=DATE-TIME:20150825T124040
DTEND;VALUE=DATE-TIME:20150825T140000
LOCATION:MOL-BIO  1414  
SUMMARY;LANGUAGE=en-us:COM S 311 
EXDATE;TZID=US-Central:20150907T124000000,20151123T124000000,20151124T124000000,20151125T124000000,20151126T124000000,20151127T124000000
TRANSP:TRANSPARENT
END:VEVENT

我使用的 ics.js 叉有行

  var start_seconds = ("00" + (start_date.getMinutes().toString())).slice(-2);

而不是

  var start_seconds = ("00" + (start_date.getSeconds().toString())).slice(-2);

导致开始时间为 12:10:10 而不是 12:10:00。感谢用户Luc帮我找到问题!