读Ical(.ics)文件给了我错误的时间。我错过了什么?

时间:2014-06-25 19:54:07

标签: php date timezone icalendar

我从an.ics文件(ical格式)读取错误值。我怀疑我的时区设置不正确。

这是一个样本:

BEGIN:VCALENDAR
PRODID:-//Ben Fortuna//iCal4j 1.0//EN
VERSION:2.0
CALSCALE:GREGORIAN
BEGIN:VEVENT
DTSTAMP:20140625T024631Z
DTSTART:20140623T060000Z
DTEND:20140623T065000Z
UID:492532-7692-c75853
SUMMARY:4A RK R4A
LOCATION:Tolk

正如你在DTSTART上看到的那样,该事件始于060000Z,在mornig中为6。但是我从一个学校的时间表中得到了一个锉文,其中第一堂课在早上08:00开始。

所以我很困惑这是什么原因。 这是我从以下地方获取ical文件的地方: enter link description here

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您需要更正时区。 .ics文件中的时间是UTC时区,该站点位于德国(CET时区),因此UTC时间早上6点是CEST。

例如:

<?php
//Create DateTime object of .ics time in UTC timezone
$utcTz = new DateTimeZone('UTC');
$dateTime = new DateTime('20140623T060000Z', $utcTz);

echo $dateTime->format("Y-m-d H:i:s"); //2014-06-23 06:00:00

//Change to CET timezone
$cetTz = new DateTimeZone('Europe/Berlin');
$dateTime->setTimezone($cetTz);

echo $dateTime->format("Y-m-d H:i:s"); //2014-06-23 08:00:00