2014-12-02 61 views
0

我正在使用Telerik RadScheduler的一个非常旧的版本,它可以将约会导出到一个ics文件,以便它们可以输入到iPhone。iCal将整天的事件整天剔空

这是Telerik的代码:

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

我的服务器是在格林尼治标准时间,我的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全天事件的例子,但是我找不到任何适当的文档(可能在错误的地方查找),我发现的内容似乎不一致。

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

回答

0

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

[...]的 “DTEND” 为 “VEVENT” 日历组件属性 指定非包容结束 的事件。对于“VEVENT”日历组件 指定了DATE值类型为“DTSTART”属性但不为 “DTEND”和“DURATION”属性的情况,该事件的持续时间为 为一天。[...]

所以在你的情况下,你应该尝试删除DTEND属性。