我在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秒,则结果是开始日期在结束日期之后的事件。