ical是按小时输入时间,而不是半小时

时间:2015-05-11 17:04:01

标签: php icalendar

在PHP中,我正在生成带有时间戳的.ical。一切似乎都在正确生成,但在尝试将文件导入OSX的日历时,它按小时而不是按照确切时间导入。在此示例中,应设置的时间是下午1:30。相反,它试图将其导入下午1:00。下面是我用来生成.ical的代码,下面是生成的.ical。

用于生成的代码:

angular
    .module( 'services')
    .service( 'serviceCampaign', function( $http ) {
      this.getStuff = function(){ return "from service campaign"; };
});


angular
    .module( 'services')
    .service( 'serviceUser', function( $http ) {

     this.getStuff = function(){ return "from service user"; };

});

生成的文件

public function createEvent($date)
{
    $eol = "\r\n";
    $ical = "BEGIN:VCALENDAR" . $eol .
    "VERSION:2.0" . $eol .
    "PRODID:-//Reminders/Relatient//NONSGML v1.0//EN" . $eol .
    "BEGIN:VEVENT" . $eol .
    "UID:" . md5(uniqid(mt_rand(), true)) . "@reltient.net" . $eol .
    "DTSTAMP:" . gmdate('Ymd', $date).'T'. gmdate('His', $date) . "Z" . $eol .
    "DTSTART:" . date('Ymd\Tgis\Z', $date) . $eol .
    "DTEND:" . date('Ymd\Tgis\Z', $date) . $eol .
    "SUMMARY:Appointment Reminder for ".date("m-d-Y", $date) . $eol .
    "END:VEVENT" . $eol .
    "END:VCALENDAR";

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

为什么日历不会将时间导入半小时,而是将其导入下午1:00到下午1:00?

编辑:这是我在尝试创建ical文件时所关注的帖子:How can I use PHP to dynamically publish an ical file to be read by Google Calendar?

更新:下面新生成的文件(将其导入日历时,导入时间为05-05-2015 8:30 pm - 8:30 pm)

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Reminders/Relatient//NONSGML v1.0//EN
BEGIN:VEVENT
UID:cff16d0441e2d7d9d00a39977a8ea416@reltient.net
DTSTAMP:20150506T013000Z
DTSTART:20150506T13000Z
DTEND:20150506T13000Z
SUMMARY:Appointment Reminder for 05-06-2015
END:VEVENT
END:VCALENDAR

1 个答案:

答案 0 :(得分:0)

因此PHP没有错,它正在编写.ics文件。实际上我还没有看到任何问题的整个部分,但有一个BEGIN:VTIMEZONE部分。以下是带有VTIMEZONE部分的更新的.ics文件。它允许您设置文件的时区。

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Reminders/Relatient//NONSGML v1.0//EN
X-WR-CALNAME: Appointment Reminder
CALSCALE:GREGORIAN

BEGIN:VTIMEZONE
TZID:America/Chicago
TZURL:http://tzurl.org/zoneinfo-outlook/America/Chicago
X-LIC-LOCATION:America/Chicago
BEGIN:DAYLIGHT
TZOFFSETFROM:-0600
TZOFFSETTO:-0500
TZNAME:CDT
DTSTART:19700308T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:-0500
TZOFFSETTO:-0600
TZNAME:CST
DTSTART:19701101T020000
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
END:STANDARD
END:VTIMEZONE

BEGIN:VEVENT
UID:07a982306563eda4045da725b9318d13@relatient.net
DTSTAMP:20150512T143025Z
DTSTART;TZID='America/Chicago':20150506T133000
DTEND;TZID='America/Chicago':20150506T133000
SUMMARY:Appointment Reminder for 05-06-2015
                                 END:VEVENT
END:VCALENDAR