1

我有这个 iCal 文件:

开始:VCALENDAR
方法:请求
产品:测试
版本:2.0
开始:VTIMEZONE
TZID:测试区
开始:标准
DTSTART:20130509T120000
日期:20130509T120000
TZOFFSETFROM:-0000
TZOFFSETTO:-0000
结束:标准
结束:VTIMEZONE
开始:事件
DTSTART;TZID=TestZone:20130509T120000
DTEND;TZID=TestZone:20130509T130000
摘要:嗨!你已经和我们约好了!
参加者;角色=请求参与者;PARTSTAT=NEEDS-ACTION;RSVP=TRUE:MAILTO:foo@gmail.com.br
组织者:MAILTO:foo@gmail.com
位置:测试街
描述:预约
序列:0
优先级:5
类别:公共
状态:已确认
传输:不透明
开始:VALARM
动作:显示
描述:提醒
触发;相关=开始:-PT00H15M00S
结束:VALARM
结束:事件
结束:VCALENDAR

但是当我在我的 GMAIL 中加载它时,它说日历设置为上午 10 点 - 上午 11 点

在此处输入图像描述

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

4

1 回答 1

4

RFC 在这里:https ://www.rfc-editor.org/rfc/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

于 2013-05-08T17:32:04.013 回答