2015-04-01 1 views
0

Я отправляю событие в Outlook Outlook через почту, но время события отличается от того, что я отправил.icalendar event timezone не соответствует времени с пользовательским часовым поясом

Я также хочу поддержать icalender событие для всех приложений, таких как MS Outlook, календарь Google ..etc

Любой хороший ресурс или апи для реализации события Анонсы то дайте мне знать. например

Отправка:

Start Time : 12:40 P.M. 
End Time : 01:00 P.M. 

В конце пользователя, прогноз показывает событие через 1 час.

Start Time : 01:40 P.M. 
End Time : 02:00 P.M. 

Я хочу тот же результат, который я отправляю.

Ниже представлен мой код icalendar.

$ical = 'BEGIN:VCALENDAR' . "\r\n" . 
     'PRODID:-//Microsoft Corporation//Outlook 10.0 MIMEDIR//EN' . "\r\n" . 
     'VERSION:2.0' . "\r\n" . 
     'METHOD:REQUEST' . "\r\n" . 
     'BEGIN:VTIMEZONE' . "\r\n" . 
     'TZID:'.date_default_timezone_get() . "\r\n" . 
     'BEGIN:STANDARD' . "\r\n" . 
     'DTSTART:20091101T020000' . "\r\n" . 
     'RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=1SU;BYMONTH=11' . "\r\n" . 
     'TZOFFSETFROM:-0400' . "\r\n" . 
     'TZOFFSETTO:-0500' . "\r\n" . 
     'TZNAME:EST' . "\r\n" . 
     'END:STANDARD' . "\r\n" . 
     'BEGIN:DAYLIGHT' . "\r\n" . 
     'DTSTART:20090301T020000' . "\r\n" . 
     'RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=2SU;BYMONTH=3' . "\r\n" . 
     'TZOFFSETFROM:-0500' . "\r\n" . 
     'TZOFFSETTO:-0400' . "\r\n" . 
     'TZNAME:EDST' . "\r\n" . 
     'END:DAYLIGHT' . "\r\n" . 
     'END:VTIMEZONE' . "\r\n" . 
     'BEGIN:VEVENT' . "\r\n" . 
     'ORGANIZER;CN="'.$from_name.'":MAILTO:'.$from_address. "\r\n" . 
     'ATTENDEE;CN="'.$to_name.'";ROLE=REQ-PARTICIPANT;RSVP=TRUE:MAILTO:'.$to_address. "\r\n" . 
     'LAST-MODIFIED:' . date("Ymd\TGis") . "\r\n" . 
     'UID:'.date("Ymd\TGis", strtotime($startTime)).rand()."@".$domain."\r\n" . 
     'DTSTAMP:'.date("Ymd\TGis"). "\r\n" . 
     'DTSTART;TZID="'.date_default_timezone_get().'":'.date("Ymd", strtotime($startTime))."T".date("His", strtotime($startTime)). "\r\n" . 
     'DTEND;TZID="'.date_default_timezone_get().'":'.date("Ymd", strtotime($endTime))."T".date("His", strtotime($endTime)). "\r\n" . 
     'TRANSP:OPAQUE'. "\r\n" . 
     'SEQUENCE:1'. "\r\n" . 
     'SUMMARY:' . $subject . "\r\n" . 
     'CLASS:PUBLIC'. "\r\n" . 
     'PRIORITY:5'. "\r\n" . 
     'BEGIN:VALARM' . "\r\n" . 
     'TRIGGER:-PT15M' . "\r\n" . 
     'ACTION:DISPLAY' . "\r\n" . 
     'DESCRIPTION:Reminder' . "\r\n" . 
     'END:VALARM' . "\r\n" . 
     'END:VEVENT'. "\r\n" . 
     'END:VCALENDAR'. "\r\n"; 
+1

Попробуйте создать новую встречу в Outlook, а затем сохраните ее как файл iCalendar. Затем сравните с вашим собственным файлом. Таким образом, вы сможете найти разницу. –

+0

Я проверю и дам вам знать. –

ответ

1

Что в вашем параметре TZID должен соответствовать тому, что находится в TZID в VTIMEZONE объекта.

+0

Мне нужен тот же результат, что я отправляю тогда, в какой часовой пояс я должен установить ?. Без часовой пояс мы должны отправить событие? –

+1

Ну прямо сейчас вы установите его для «Восточного времени» для свойства и результата 'date_default_timezone_get()' для параметра. Это не верно. Я не знаю, что вы просите. – Evert

+0

Я обновил код с тем же часовым поясом с именем date_default_timezone_get(). Но я хочу знать, что я должен получить то же время, что и я, например, Start Time: 12:40 PM и End Time: 01:00 P.M. Я хочу то же самое, что и в календаре. –