将EKEventEditViewController与自定义时区一起使用时,我遇到了一个奇怪的问题。它在两种情况下表现不同:
情况1 - 正常工作:
情况2 - 意外行为:
我的猜测是,在第一次显示EKEventEditViewController时,它会以某种方式缓存默认时区,然后将其用作偏移量。
有没有人遇到过类似的问题?这是一个错误还是我错过了什么?
答案 0 :(得分:0)
我遇到了同样的问题。我使用偏移量(单独)将所有日期存储在GMT timeZone中的数据库中。我的应用程序从运行开始(GMT)开始使用自定义timeZone。当我想在将事件导出到日历时使用这些日期时,我看到错误的开始和结束日期。帮我解决问题的原因是首先使用以下转换器方法将我在数据库中存储的日期转换为系统时区(见下文)。传递给EKEventEditViewController的这种转换日期然后正确显示日期。希望它也能解决你的问题。
+ (NSDate *) convertToSystemTimeZone:(NSDate*)sourceDate {
NSTimeZone* sourceTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
NSTimeZone* destinationTimeZone = [NSTimeZone systemTimeZone];
NSInteger sourceGMTOffset = [sourceTimeZone secondsFromGMTForDate:sourceDate];
NSInteger destinationGMTOffset = [destinationTimeZone secondsFromGMTForDate:sourceDate];
NSTimeInterval interval = destinationGMTOffset - sourceGMTOffset;
NSDate* destinationDate = [[[NSDate alloc] initWithTimeInterval:interval sinceDate:sourceDate] autorelease];
return destinationDate; }