【问题标题】:Time zone in icalendar or vcalendar meeting invitationicalendar 或 vcalendar 会议邀请中的时区
【发布时间】:2015-06-16 23:20:21
【问题描述】:

我正在通过 PHP 和以下代码发送日历会议请求,我正在使用。

BEGIN:VCALENDAR
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:REQUEST
BEGIN:VEVENT
DTSTART:20150501T080000Z
DTEND:20150502T090000Z
DTSTAMP:20150411T075116Z
ORGANIZER;CN=Jass:mailto:organizer@google.com
UID:12345678
ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP= TRUE;CN=Sample:mailto:sample@test.com
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 点到上午 9 点发送请求,但在邀请中,我从下午 1:30 到下午 2:30 收到。

那么在这种情况下如何管理时区?
什么是 DTSTAMP,我们可以通过 DTSTAMP 管理这个问题吗?

【问题讨论】:

    标签: php icalendar vcalendar


    【解决方案1】:

    DTSTART 和 DTEND 中的“Z”后缀表示这些日期时间以 UTC 格式提供。假设您的客户将时区设置为印度 (UTC + 5h30),它会正确显示开始时间为下午 1:30。

    因此,您需要在发送邀请时考虑到这一点,或者在邀请中包含 VTIMEZONE 组件并在 DTSTART/DTEND 中引用该 VTIMEZONE:

    ...
    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://www.rfc-editor.org/rfc/rfc5545#section-3.8.7.2

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-19
      • 2010-11-21
      • 2015-10-06
      • 2018-10-03
      • 2016-04-21
      • 2022-01-12
      • 2011-06-16
      • 1970-01-01
      相关资源
      最近更新 更多