1

我已经从 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";
4

2 回答 2

4

iCalendar 中执行此操作的正确方法是使用他们所谓的“浮动时间”,它完全符合您的要求,并且您确实只需要从时间中删除 Z。

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

于 2013-07-28T23:55:20.663 回答
2

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

X-WR-TIMEZONE:America/New_York
于 2013-07-28T23:37:10.530 回答