从设置手动设置日期时,NSDate计算缺少1小时

时间:2012-10-16 13:53:47

标签: iphone objective-c ios nsdate nsdateformatter

我有一个奇怪的问题......

如果在我的iPhone中自动设置日期/时间,而不是正确显示时间,如下所示...... enter image description here

如果手动设置的日期/时间与我实际所在的时区不同(我在印度并将其设置为伦敦。如果设置为印度则工作正常),它显示错误结果仅适用于使用方法[self.surveyModel.creationDate dateByAddingTimeInterval:60*60*24*30]计算的两个日期,同样适用于20天..请参阅下面的图片。

enter image description here

我没有为应用程序设置默认时区或本地时区,我正在使用以下方法来显示结果......

- (NSString *)stringWithFormat:(NSString *)format {
    NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init];
    [outputFormatter setTimeZone:[NSTimeZone systemTimeZone]];
    [outputFormatter setDateFormat:format];
    NSString *timestamp_str = [outputFormatter stringFromDate:self];
    [outputFormatter release];
    return timestamp_str;
}

我在这里做错了什么......?

1 个答案:

答案 0 :(得分:2)

注意:此回答是对问题评论的回复

似乎错误是由夏令时地区引起的,在这种情况下是英国伦敦。

当自动计算日期/时间时,iOS DateTime库会将DayLight Saving考虑在内。

手动处理DateTime时,您正在通过此代码[self.surveyModel.creationDate dateByAddingTimeInterval:60*60*24*30]

执行此操作

您正在设置DateTime而不列出启用的DayLight选项。因此,当您使用NSTimeZone查找DayLight节省选项时。