EventKit中的夏令时错误

时间:2017-11-06 14:31:40

标签: objective-c eventkit ekeventkit

我在eventKit发现了一个错误,其中保存日期会被更改。在此示例中,我使用标题为午夜的事件,该事件是1秒长事件,计算为当地天文午夜。在本地timeZone中,由于夏令时结束,因此在语言环境格式中有两次出现1AM到2AM。该事件发生在凌晨1点到凌晨2点的第二个实例中。请参阅此示例代码:

if ([event.title containsString:@"Midnight"]) {
    NSLog(@"Timezone is %@",[NSTimeZone localTimeZone]);
    NSLog(@"Saving midnight from %@ to %@", event.startDate,event.endDate);
    NSLog(@"Saving midnight from %@ to %@", [event.startDate debugDescription],[event.endDate debugDescription]);
}
[self.eventStort saveEvent:event span:EKSpanThisEvent error:&error];
if ([event refresh]) {
    NSLog(@"Updated event goes from %@ to %@", event.startDate,event.endDate);
    NSLog(@"Updated event goes from %@ to %@", [event.startDate debugDescription],[event.endDate debugDescription]);
}

Timezone is Local Time Zone (America/Chicaco (CST) offset -21600)
Saving midnight from Sun Nov  5 01:53:14 2017 to Sun Nov  5 01:53:15 2017
Saving midnight from 2017-11-05 07:53:14 +0000 to 2017-11-05 07:53:15 +0000
Updated event goes from Sun Nov  5 01:53:14 2017 to Sun Nov  5 01:53:15 2017
Updated event goes from 2017-11-05 07:53:14 +0000 to 2017-11-05 06:53:15 +0000

请注意,在最后一行,结束日期是保存后的一小时。使用区域设置格式显示时,它看起来相同,但查看UT日期,您可以告诉它已更改。

在此特定示例中,如果事件长度为1秒,则结果是开始日期在结束日期之后的事件。

0 个答案:

没有答案