使用 PHP ICalender 的方法 = "REQUEST"创建全天事件



参考这个链接给出的答案.ics文件中的单日全天约会。

BEGIN:VEVENT
UID:1248
DTSTART;VALUE=DATE:20151218
DTEND;VALUE=DATE:20151219
DTSTAMP:20151218T080000Z
CREATED:20151212T200409Z
DESCRIPTION:examplea
LAST-MODIFIED:20151218T080000Z
LOCATION:
SUMMARY:example summary
SEQUENCE:0
STATUS:CONFIRMED
TRANSP:OPAQUE
END:VEVENT
BEGIN:VEVENT
UID:1249
DTSTART;VALUE=DATE:20151217
DTEND;VALUE=DATE:20151218
DTSTAMP:20151217T080000Z
CREATED:20151212T200409Z
DESCRIPTION:example1
LAST-MODIFIED:20151217T080000Z
LOCATION:
SUMMARY:Example
SEQUENCE:0
STATUS:CONFIRMED
TRANSP:OPAQUE
END:VEVENT

上面的示例创建了一个全天的事件。但是当我将方法设置为"REQUEST"时,outlook中的全天事件框将被选中。如何解决这个问题?

我张贴这个解决方案设置开始日期的时间为午夜(亚太地区为183000小时)并将结束日期设置为date+1(182959小时)这样就可以创建全天事件。把我的文件贴出来,如果有人需要的话。

$ical = "BEGIN:VCALENDARrn";
$ical .= "VERSION:2.0rn";
$ical .= "PRODID:-//abc//abc//ENrn";
$ical .= "METHOD:"."REQUEST"."rn";
$ical .= "BEGIN:VEVENTrn";
$ical .= "ORGANIZER;CN=Somename":mailto:testabc.com rn";
$ical .= "UID:1248rn";
$ical .= "SEQUENCE:".$sequence."rn";
$ical .= "STATUS:".$status."rn";
$ical .= "DTSTART:20161009T183000rn";
$ical .= "DTEND:  20161010T182959rn";
//$ical .= "DTSTAMP:20161218T183000Zrn";
$ical .= "CREATED:20151212T183000rn";
$ical .= "DESCRIPTION:examplern";
$ical .= "LAST-MODIFIED:20151218T080000Zrn";
$ical .= "LOCATION:Indiarn";
$ical .= "SUMMARY:example summaryrn";
$ical .= "SEQUENCE:0rn";
$ical .= "STATUS:CONFIRMEDrn";
//$ical .= "TRANSP:OPAQUErn";
$ical .="X-MICROSOFT-CDO-BUSYSTATUS:FREErn";
$ical .="X-MICROSOFT-CDO-IMPORTANCE:1rn";
$ical .="X-MICROSOFT-DISALLOW-COUNTER:FALSErn";
$ical .="X-MS-OLK-ALLOWEXTERNCHECK:TRUErn";
$ical .="X-MS-OLK-CONFTYPE:0rn";
$ical .="X-MICROSOFT-CDO-ALLDAYEVENT:TRUErn";
$ical .="X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUErn";
$ical .= "END:VEVENTrn";
$ical .= "END:VCALENDARrn";

REQUEST方法类型用于更改已发布的事件。事件已经发布了吗?VEVENT也必须包装在一个VCALENDAR中。VCALENDAR在哪里?

最新更新