0

我正在使用一个非常旧版本的 Telerik RadScheduler,它将约会导出到 ics 文件,以便可以将它们提供给 iPhone。

这是 Telerik 代码:

 TimeZoneInfo localZone = TimeZoneInfo.Local;
 TimeSpan ts = localZone.BaseUtcOffset;
 return RadScheduler.ExportToICalendar(scheduler.Appointments, ts);`

我的服务器是 GMT,我的 iPhone 是 NZDT (+13),我的约会存储在 UTC。

我有一些全天约会,从 NZDT 时间午夜到午夜。他们是这样导出的:

 BEGIN:VEVENT DTSTART:20141205T110000Z 
 DTEND:20141206T110000Z
 UID:20141202T140355Z-907 
 DTSTAMP:20141202T140355Z SUMMARY: Day Off
 DESCRIPTION:Own Day END:VEVENT

当它们在 iPhone 上显示时,它们不会显示为全天事件,它们只是将整个一天的午夜到午夜空白作为约会。

如果它是错误的,我非常愿意自己重新编写 ical 但我不知道它应该是什么。我在谷歌上搜索了 iCal 全天活动的示例,但我找不到任何合适的文档(可能找错了地方),而且我发现的内容似乎不一致。

我想知道的是,这与时区有关还是输出不正确?全天事件的开始和结束时间应该是什么,或者是否需要添加“全天事件”的键?

4

1 回答 1

0

不是 100% 确定 iOS 如何实现它,但 RFC5545 3.6.1说:

[...]“VEVENT”日历组件的“DTEND”属性指定事件的非包含结束。对于“VEVENT”日历组件指定具有 DATE 值类型但没有“DTEND”或“DURATION”属性的“DTSTART”属性的情况,事件的持续时间被视为一天。[...]

因此,在您的情况下,您应该尝试删除该DTEND属性。

于 2014-12-02T21:28:30.257 回答