2010-10-07 157 views
0

我已经尝试了几个帖子的解决方案,但没有运气。 问题是我面临的可能是白色时区。在设备和模拟器上,UIDatePicker和NSDateFormatter都返回不正确的日期,从所选日期(根据设备或mac上设置的当前时区)添加或减去GMT 0之间的差异。UIDatePicker&NSDateFormatter返回不正确的日期

我已经试过设置区域和时区,但没有任何工作。 任何想法都很好!谢谢。

(还没有发布任何代码示例,因为两者都没有,现在设置的任何属性初始化)。

更新1:

这里是代码片段:

datePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0.0, frame.size.height - 216.0, frame.size.width, 216.0)]; 

    [self addSubview:datePicker]; 

    .... 


    NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 

    [formatter setDateFormat:@"EEE, MMM d, y h:mma"]; 

    NSString *dateString = [formatter stringFromDate:datePicker.date]; 
    [formatter release]; 
+0

发布您的代码。帮助我们帮助你! ;-) – 2010-10-07 17:39:37

回答

14

发现解决方案时,应按以下方式添加时区差异。

- (NSDate *)dateToGMT:(NSDate *)sourceDate { 
    NSTimeZone* destinationTimeZone = [NSTimeZone systemTimeZone]; 
    NSInteger destinationGMTOffset = [destinationTimeZone secondsFromGMTForDate:sourceDate]; 
    NSDate* destinationDate = [[[NSDate alloc] initWithTimeInterval:destinationGMTOffset sinceDate:sourceDate] autorelease]; 
    return destinationDate; 
} 
+0

ios9.2的工作代码。 – pkc456 2016-01-06 06:42:48

0

你说你设定时区,但你没有说在哪里。你需要设置你的UIDatePicker和NSDateFormatter的timeZone属性。

+0

我已经用代码更新了最初的帖子。我试图将timeZone属性设置为:defaultTimeZone,localTimeZone,甚至指定GMT + 3,但他们仍然返回不正确的日期。 – 2010-10-08 06:15:25

相关问题