UIDatePicker& NSDateFormatter返回错误的日期

时间:2010-10-07 16:41:48

标签: iphone objective-c ios4 uidatepicker nsdateformatter

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

我已经尝试过设置区域设置和时区但没有任何效果。 任何想法都很棒!感谢。

(尚未发布任何代码示例,因为两者都已初始化而未立即设置任何属性。)

更新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];

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

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