【问题标题】:UIDatePicker & NSDateFormatter returning incorrect dateUIDatePicker & NSDateFormatter 返回不正确的日期
【发布时间】:2010-10-07 16:41:47
【问题描述】:

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

我已经尝试过设置语言环境和时区,但没有任何效果。 任何想法都是受欢迎的!谢谢。

(尚未发布任何代码示例,因为两者都在没有设置任何属性的情况下进行了初始化。)

更新 1:

这里是sn-p的代码:

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

【问题讨论】:

  • 发布您的代码。帮助我们帮助你! ;-)

标签: iphone objective-c ios4 uidatepicker nsdateformatter


【解决方案1】:

找到了解决办法,时区差应该按如下方式添加。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我已经用代码更新了最初的帖子。我尝试将 timeZone 属性设置为:defaultTimeZone、localTimeZone,甚至指定 GMT +3,但它们仍然返回不正确的日期。
    猜你喜欢
    • 2012-07-01
    • 1970-01-01
    • 2015-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多