我正在開發一個PHP工具來創建一個ICS文件,將通過郵件發送。錯誤的ICS文件中的時間
創建文件後,我嘗試將其添加到Outlook 2016或iCalendar(Apple)中。除開始時間和結束時間外,所有信息都是正確的。他們從一個小時抵消。
Exemle:
BEGIN:VCALENDAR
METHOD:PUBLISH
VERSION:2.0
PRODID:-//Communication Maker
CALSCALE:GREGORIAN
BEGIN:VEVENT
DTSTART;TZID=Europe/Zurich:20151201T150000Z
DTEND;TZID=Europe/Zurich:20151201T180000Z
UID:565c50b5ca7d9
LOCATION:Location
SUMMARY:Title
DESCRIPTION:Content
END:VEVENT
END:VCALENDAR
以下是該文件的信息:
開始時間:2015年1月12日@ 15:00:00
結束時間:01/12/2015 @ 18:00:00
Timezone:UTC +01:00(Europe /蘇黎世)
在這裏,在Outlook和的iCalendar結果:
開始時間:2015年1月12日@ 16:00:00
結束時間:01/12/2015 @ 19:00:00
我已經搜索了4天,我無法找到正確數據的事件的答案。
如果需要,我可以給你更多我的代碼(HTML或PHP類)。
有我的課:
class ICS {
private $sSaveDir = './icsFiles/';
private $sIcsContent = '';
private $sIcsDateFormat = 'Ymd\THis\Z';
public function __construct($sTitle = null, $sLocation = null, $sUrl = null, $sTimezoneValue = null, $sEventText = null, $sDateS = null, $sTimeS = null, $sDateE = null, $sTimeE = null) {
// Timezone par défaut
date_default_timezone_set('UTC');
// Génération de l'ID unique
$sUniqId = uniqid();
// Construction du array
$aIcsContent = array(
"BEGIN:VCALENDAR",
"METHOD:PUBLISH",
"VERSION:2.0",
"PRODID:-//Communication Maker",
"CALSCALE:GREGORIAN",
"BEGIN:VEVENT",
"DTSTART;TZID=".$sTimezoneValue.":".date($this->sIcsDateFormat, strtotime($sDateS." ".$sTimeS)),
"DTEND;TZID=".$sTimezoneValue.":".date($this->sIcsDateFormat, strtotime($sDateE." ".$sTimeE)),
"UID:".$sUniqId,
"LOCATION:".$sLocation,
"SUMMARY:".$sTitle,
"DESCRIPTION:".$sEventText,
"END:VEVENT",
"END:VCALENDAR"
);
// Array => string
$this->sIcsContent = implode(PHP_EOL, $aIcsContent);
// Créer et ouvre le fichier en écriture seule
if($oIcsFile = fopen($this->sSaveDir.'event_'.$sUniqId.'.ics', 'w')) {
// Inscrit les données de l'événement dans le fichier
fwrite($oIcsFile, $this->sIcsContent);
// Ferme le fichier proprement
fclose($oIcsFile);
echo 'true';
}
else {
echo 'false';
}
}
}
謝謝您的幫助。我真的需要它。
是的,但我想在UTC + 01:00顯示15:00。如果您使用UTC + 02:00的日曆打開日曆,則會看到16:00。 – SatanicGeek
你是說你想坐在UTC + 200的人看到16:00,而坐在UTC + 100的人看到15:00? –
是的,那正是我想要的。 – SatanicGeek