Я отправляю запрос о встрече в календаре через PHP и следующий код, который я использую.
BEGIN:VCALENDAR
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:REQUEST
BEGIN:VEVENT
DTSTART:20150501T080000Z
DTEND:20150502T090000Z
DTSTAMP:20150411T075116Z
ORGANIZER;CN=Jass:mailto:[email protected]
UID:12345678
ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP= TRUE;CN=Sample:mailto:[email protected]
DESCRIPTION:Complete event on http://www.sample.com/get_event.php?id=12345678
LOCATION: India
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:TESTING timezones
TRANSP:OPAQUE
END:VEVENT
END:VCALENDAR
проблема
Я отправляю запрос с 8:00 до 9:00, но по приглашению я получаю с 13:30 до 14:30.
так как управлять часовым поясом в этом случае?
Что такое DTSTAMP и можем ли мы справиться с этой проблемой через DTSTAMP?
Суффикс «Z» в DTSTART и DTEND указывает, что эти дата и время указываются в UTC. Предполагая, что ваш клиент имеет часовой пояс, установленный в Индию (UTC + 5:30), он правильно отображает время начала, как 13:30.
Таким образом, вы должны либо принять это во внимание при отправке вашего приглашения, либо включить компонент VTIMEZONE в ваше приглашение и указать VTIMEZONE в своем DTSTART / DTEND:
...
METHOD:REQUEST
BEGIN:VTIMEZONE
TZID:Asia/Kolkata
BEGIN:STANDARD
TZOFFSETFROM:+0530
TZOFFSETTO:+0530
DTSTART:19451015T000000
TZNAME:IST
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
DTSTART;TZID=Asia/Kolkata:20150501T080000
DTEND;TZID=Asia/Kolkata:20150501T090000
…
DTSTAMP используется, главным образом, для того, чтобы увидеть, является ли обновление существующего события более поздним, чем то, что клиент уже получил. Увидеть https://tools.ietf.org/html/rfc5545#section-3.8.7.2
Других решений пока нет …