1

我有一个 php 页面,用于测试 iPad 的示例 ics 数据,但是当我在 Safari中点击“日历”中的“打开”按钮时,它会触发日历应用程序,但它会打开而没有向我显示任何有关事件的信息。这是我的代码:

<?php

$ical = "
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN

BEGIN:VEVENT
DTSTAMP:" . gmdate('Ymd').'T'. gmdate('His') . "Z
DTSTART:" . gmdate('Ymd').'T'. "160000Z
DTEND:" . gmdate('Ymd').'T'. "170000Z
SUMMARY:Paul's Birthday
END:VEVENT

BEGIN:VEVENT
DTSTAMP:" . gmdate('Ymd').'T'. gmdate('His') . "Z
DTSTART:" . gmdate('Ym').'T'. "230000Z
DTEND:" . gmdate('Ymd').'T'. "240000Z
SUMMARY:John's Birthday
END:VEVENT

END:VCALENDAR";


//echo out
header('Content-type: text/calendar; charset=utf-8');
header('Content-Disposition: inline; filename=calendar.ics');
echo $ical;

?>

我究竟做错了什么?

编辑:

这是从 php 生成的示例文件:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN

BEGIN:VEVENT
DTSTAMP:20121017T204856Z
DTSTART:20121017T160000Z
DTEND:20121017T170000Z
SUMMARY:Paul's Birthday
END:VEVENT

BEGIN:VEVENT
DTSTAMP:20121017T204856Z
DTSTART:201210T230000Z
DTEND:20121017T240000Z
SUMMARY:John's Birthday
END:VEVENT

END:VCALENDAR
4

2 回答 2

0

你有一个错字。在您的第二个 VEVENT 上,DTSTART 的那一天不见了。

代替

gmdate('Ym')

gmdate('Ymd')

于 2012-10-18T06:20:18.900 回答
0

自己修好了。显然 iCal 不喜欢在BEGIN:VCALENDAR之前换行。我希望 iCal 去掉那种东西,但显然他们没有,所以如果其他人对 iCal 有问题,请务必检查字符串是否以换行符开头!

于 2012-10-18T15:56:02.440 回答