用PHP而不需要放时区

时间:2013-07-28 23:29:30

标签: php datetime timezone google-calendar-api icalendar

我已经从php创建了ical文件,它运行正常。但是当我导入谷歌日历时,它会改变时间。

在做研究之后,这是时区问题。所以我尝试通过从时间中删除Z(UTC)来修复它,但导入后时间仍然是错误的。

有没有办法,如果我设置以下事件时间,它应该适用于所有导入,无论他们为那个日历设置了哪个时区。

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

        $start  = strtotime('2013-7-26 2:36 am');
        $end    = (60*1); // end in one minute

         $ical .="BEGIN:VEVENT\n".
                        "UID:" . md5(uniqid(mt_rand(), true)) . "@".site::$domain_only."\n".
                        "DTSTAMP:" . date('Ymd\THis'). "\n".
                        "DTSTART:" . date('Ymd\THis', $start)."\n".
                        "DTEND:" . date('Ymd\THis', $start+$end)."\n".
                        "SUMMARY: My Event\n".
                        "END:VEVENT\nEND:VCALENDAR";

2 个答案:

答案 0 :(得分:4)

iCalendar中执行此操作的正确方法是使用他们称之为“浮动时间”的方式,它完全按照您的要求进行操作,而您确实只需要从时间中删除Z.

如果这不适用于谷歌日历,那么这意味着它们不支持浮动时间,不幸的答案就是“这是不可能的”。

答案 1 :(得分:2)

您可以使用一行设置日历的时区

X-WR-TIMEZONE:America/New_York