2011-05-03 64 views
0

我正在安排會議請求的表單。現在我需要給它添加時區。

我有兩個下拉菜單分別用於時區和時間。所以如果我選擇時區(格林威治標準時間-11:00)中途島,薩摩亞和時間下午4:00比郵件去一個人與他的展望會議要求。


現在他的前景配置了IST,但由於所選時區是新時區,因此應適當調整。

會議請求的格式

$ical = 'BEGIN:VCALENDAR 
PRODID:-//Microsoft Corporation//Outlook 11.0 MIMEDIR//EN 
VERSION:2.0 
METHOD:REQUEST 
BEGIN:VEVENT 
ORGANIZER:MAILTO:'.$from_address.' 
ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE; 
CN='.$to.':mailto:'.$to.' 
DTSTART:'.$dtstart.' 
DTEND:'.$dtend.' 
LOCATION:'.$meeting_location.' 
TRANSP:OPAQUE 
SEQUENCE:0 
UID:'.$cal_uid.' 
DTSTAMP:'.$todaystamp.' 
DESCRIPTION:'.$meeting_description.' 
SUMMARY:'.$subject.' 
PRIORITY:5 
CLASS:PUBLIC 
END:VEVENT 
END:VCALENDAR'; 

我已經搜索就可以了..它說,我要補充VTIMEZONE,TZID,TZOFFSETFROM,TZOFFSETTO 現在我沒有得到TZOFFSETFROM的意思,TZOFFSETTO ...?以及如何使用這些執行任務

回答

0

注意,無論TZID你挑(他們是免費的格式),他們應該在配置的VTIMEZONE部分匹配的條目。與@anmari所說的相反,VTIMEZONE部分是日曆事件被Outlook等(顯示接受/拒絕按鈕)識別所需的。

根據我的經驗,最明智的方法是從現有的VTIMEZONE配置中複製/粘貼郵件源。例如:這是西歐的一個:

BEGIN:VTIMEZONE 
TZID:W. Europe Standard Time 
BEGIN:STANDARD 
DTSTART:16010101T030000 
TZOFFSETFROM:+0200 
TZOFFSETTO:+0100 
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=10 
END:STANDARD 
BEGIN:DAYLIGHT 
DTSTART:16010101T020000 
TZOFFSETFROM:+0100 
TZOFFSETTO:+0200 
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=3 
END:DAYLIGHT 
END:VTIMEZONE 

不要改變任何東西 - 只需複製/粘貼到您的電子郵件代碼。現在,我們在內部使用與此相匹配的PHP時區,例如「歐洲/阿姆斯特丹」。我們將此作爲基準時區,並使用PHP的DateTime類將VEVENT的值轉換爲該值。

$Date = new DateTime($event_date); // this will be in the server's time zone 

// convert it to the 'internal' time zone 
$Date->setTimezone(new DateTimeZone('Europe/Amsterdam')); 

// ... 

echo "BEGIN:VEVENT\n"; 
echo "DTSTART;TZID=W. Europe Standard Time:" . $Date->format('Ymd\THis') . "\n" 

發送此消息時,接收日曆/電子郵件客戶端會自動將傳入時間數據轉換爲收件人的時區。好極了! :)

2

的VTIMEZONE的東西,如果你想定義/重新定義時區,當夏令變化等

你的目的,你不需要做,您可以將時區添加到DTSTART的時間值。 :

EG:DTSTART; TZID =歐洲/倫敦:20060707T130000

,或者如果你想整個ICS文件的時區,你可以發出一個普遍接受的

X-WR-時區:歐洲/奧斯陸

(在文件的頭日曆級別,而不是在VEVENT)

的一些注意事項,可以幫助:

http://icalevents.com/2613-what-every-developer-ought-to-know-about-timezones-wrt-calendar-files/

http://icalevents.com/2064-ical-local-or-floating-date-times/

+0

當我在「DTSTART; TZID =歐洲/倫敦:20060707T130000」中添加它現在的工作。我還在DTEND中添加了tzid。現在郵件不會用會議格式。 – Jaimin 2011-05-04 07:56:59