【问题标题】:EXDATE recurrence setting being ignoredEXDATE 重复设置被忽略
【发布时间】:2018-01-28 00:28:24
【问题描述】:

使用 PHP 客户端库,我正在尝试创建一个每周重复发生的事件,该事件将在我们停业的日子里跳过。

我正在传递这些参数以创建一个新的 Google_Service_Calendar_Event 对象,该对象将传递给 Google_Service_Calendar::events->update()。

$params = array(
    'summary' => 'Event Title',
    'location' => 'Event Location',
    'start' => array(
        'dateTime' => $slot['startDate'].'T'.$slot['startTime'],
        'timeZone' => 'America/New_York',
    ),
    'end' => array(
        'dateTime' => $slot['startDate'].'T'.$slot['endTime'],
        'timeZone' => 'America/New_York',
    ),
    'recurrence' => $arrRecurrence,
    'attendees' => $arrAttendees,
);

$arrRecurrence 的规则规定该活动应每周重复一次,直到 2 月底,跳过总统日:

Array
(
    [0] => EXDATE;VALUE=DATE:20180219
    [1] => RRULE:FREQ=WEEKLY;UNTIL=20180224;BYDAY=MO
)

RRULE 被正确应用,但EXDATE 被忽略,我似乎无法弄清楚原因。

【问题讨论】:

  • 由于开始和结束日期有一个时区,请尝试EXDATE;TZID=America/New_York;VALUE=DATE:20180219, stackoverflow.com/questions/25170070/…
  • 试过了,但看起来它被忽略了。插入事件后,我做了一个get() 并且TZID 不在EXDATE 规则中。我认为它无效,因为我指定的是日期而不是日期时间

标签: php google-calendar-api


【解决方案1】:

EXDATE 的格式必须与 start 和 end 的值相同。在这种情况下,这意味着 EXDATE 需要一个额外的时间组件和一个时区。

EXDATE;TZID=America/New_York;VALUE=DATE:20180219T000000Z

【讨论】:

  • 试过了,但看起来它被忽略了。插入事件后,我做了一个get() 并且TZID 不在EXDATE 规则中。我认为它无效,因为我指定的是日期而不是日期时间
  • ;VALUE=DATE 应在此处删除;它使表达式无效。
猜你喜欢
  • 2019-08-07
  • 1970-01-01
  • 1970-01-01
  • 2022-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多