使用php在单个ics文件(icalendar流)中更新多个事件

使用php在单个ics文件(icalendar流)中更新多个事件,php,icalendar,Php,Icalendar,在一个ics文件中添加了多个事件之后,我使用了给定的代码来更新一个ics文件中的多个事件。但它不起作用。事件不会更新。任何人都请帮助我。我的代码是: $ical = "BEGIN:VCALENDAR"; $ical .= "\nVERSION:2.0"; $ical .= "\nPRODID:-//hacksw/handcal//NONSGML v1.0//EN"; $ical .= "\nMETHOD:REQUEST"; $ical .= "\nCALSCALE

在一个ics文件中添加了多个事件之后,我使用了给定的代码来更新一个ics文件中的多个事件。但它不起作用。事件不会更新。任何人都请帮助我。我的代码是:

$ical = "BEGIN:VCALENDAR";    
$ical .= "\nVERSION:2.0";    
$ical .= "\nPRODID:-//hacksw/handcal//NONSGML v1.0//EN";    
$ical .= "\nMETHOD:REQUEST";    
$ical .= "\nCALSCALE:GREGORIAN";    
$ical .= "\nX-WR-RELCALID:asjh675adashdh";    
$ical .= "\nX-WR-CALNAME:My Nov Calendar";   

foreach($arr as $newArr){
    $ical .= "\nBEGIN:VEVENT";    
    $ical .= "\nUID:" . md5($newArr['stDate']) . "example.com";    
    $ical .= "\nSEQUENCE:1";    
    $ical .= "\nDTSTAMP:" . gmdate('Ymd');    
    $ical .= "\nORGANIZER:catalog@example.com";    
    $ical .= "\nDTSTART:".$newArr['stDate'];    
    $ical .= "\nDTEND:".$newArr['stDate'];    
    $ical .= "\nSUMMARY:".$newArr['sub'];    
    $ical .= "\nDESCRIPTION:".$newArr['desc'];    
    $ical .= "\nCLASS:PUBLIC";    
    $ical .= "\nSTATUS:CONFIRMED";    
    $ical .= "\nTRANSP:TRANSPARENT";    
    $ical .= "\nEND:VEVENT";    
}

$ical .= "\nEND:VCALENDAR";    
header('Content-type: text/calendar; charset=utf-8');    
header('Content-Disposition: inline; filename=my-calendar.ics');    
echo $ical;    
exit;

我还更改了序列号,但它不起作用。

在每个事件中更改了什么属性

UID属性基于每个事件的DTSTART。因此,如果更改事件的开始,UID将更改。更新事件时,UID不得更改。在事件的整个生命周期中,这是一件应该保持不变的事情

不知道gmdate('Ymd')的确切功能,但DTSTAMP应该是yyyymmddthhmmsz格式


然后,在内容类型标头中缺少METHOD=REQUEST参数,但我认为这不会导致更新失败。

感谢您的回答,但我使用了一个名为$arr的静态数组,其中的值是静态的,因此每个UID的DTSTART值保持不变。DTSTAMP也是接受YYYYMMDD值,我通过gmdate('Ymd')使用了该值,最后我在代码开头已经使用了METHOD=REQUEST。请查收。所以,请让我知道,我必须做什么来使用PHPDTSTAMP更新单个ics文件中的多个事件必须在zulu中。看见就方法而言,我谈论的是内容类型头,而不是iCalendar属性。看见