我有这个iCal文件:

开始:VCALENDAR
方法:要求
产品:测试
版本:2.0
开始:VTIMEZONE
TZID:TestZone
开始:标准
DTSTART:20130509T120000
RDATE:20130509T120000
TZOFFSETFROM:-0000
TZOFFSETTO:-0000
结束:标准
结束:VTIMEZONE
开始:温柔
DTSTART; TZID = TestZone:20130509T120000
DTEND; TZID = TestZone:20130509T130000
摘要:嗨!您已经与我们预约了!
与会者;角色=请求参与者; PARTSTAT =需要操作; RSVP =真:邮件:[email protected]
主办单位:MAILTO:[email protected]
地点:测试街
描述:预约
序列:0
优先级:5
类别:公共
状态:确认
传输:不透明
开始:VALARM
动作:显示
描述:提醒
触发;相关=开始:-PT00H15M00S
结束:VALARM
结束:香气
结束:VCALENDAR


但是,当我将其加载到GMAIL中时,它说日历设置为10am-11am



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

最佳答案

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中提取的

关于java - iCalendar文件中的时区问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16446456/

10-09 06:21