首页 文章

iCalendar文件中的时区问题

提问于
浏览
0

我有这个iCal文件:

BEGIN:VCALENDAR
METHOD:REQUEST
PRODID:Test
VERSION:2.0
BEGIN:VTIMEZONE
TZID:TestZone
BEGIN:STANDARD
DTSTART:20130509T120000
RDATE:20130509T120000
TZOFFSETFROM:-0000
TZOFFSETTO:-0000
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
DTSTART;TZID=TestZone:20130509T120000
DTEND;TZID=TestZone:20130509T130000
SUMMARY:Hi! You have set a appointment with us!
ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE:MAILTO:foo@gmail.com.br
ORGANIZER:MAILTO:foo@gmail.com
LOCATION:Test Street
DESCRIPTION:Appointment
SEQUENCE:0
PRIORITY:5
CLASS:PUBLIC
STATUS:CONFIRMED
TRANSP:OPAQUE
BEGIN:VALARM
ACTION:DISPLAY
DESCRIPTION:REMINDER
TRIGGER;RELATED=START:-PT00H15M00S
END:VALARM
END:VEVENT
END:VCALENDAR

但当我在我的GMAIL中加载它时,它表示日历设置为 10am - 11am

enter image description here

如果我的VTIMEZONE配置没有设置任何偏移量,为什么会发生这种情况?以及如何在我的日历中获得实际的DTSTART和DTEND时间?

1 回答

  • 3

    RFC在这里:http://tools.ietf.org/html/rfc5545

    您必须使用定义偏移量的TZID指定本地时间 .

    例:

    DTSTART;TZID=America/New_York:19970714T133000
    

    您需要在ics文件中使用VTIMEZONE组件 .

    BEGIN:VTIMEZONE
    TZID:America/New_York
    LAST-MODIFIED:20050809T050000Z
    BEGIN:DAYLIGHT
    DTSTART:19670430T020000
    RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=-1SU;UNTIL=19730429T070000Z
    TZOFFSETFROM:-0500
    TZOFFSETTO:-0400
    TZNAME:EDT
    END:DAYLIGHT
    BEGIN:STANDARD
    DTSTART:19671029T020000
    RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=20061029T060000Z
    TZOFFSETFROM:-0400
    TZOFFSETTO:-0500
    TZNAME:EST
    END:STANDARD
    END:VTIMEZONE
    

    这些示例来自RFC 5545

相关问题