2012-10-16 34 views
1

手动设置我有一种奇怪的查询......NSDate的计算失踪1人时间当日期从设置

如果日期/时间在我的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; 
} 

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

+0

只是一个想法,不知道它是否正确。您是否考虑过夏令时?当处理手动日期时,您需要查看该日期。 – Steven

+0

我认为@Steven是对的。您应该将日期分解为组件并添加日期而不是TimeInterval。 –

+0

@Steven谢谢你的投入..你是对的。我不包括当天的节省。 YOu可以发表您的评论作为答案,我会接受它./ –

回答

2

注:这个答案是在回复评论的问题

这似乎错误是由日光节约地区造成的,在这种情况下,英国伦敦。

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

当手动日期时间,你通过这个代码[self.surveyModel.creationDate dateByAddingTimeInterval:60*60*24*30]

要设置日期时间,而不列出启用日光选项做处理。所以当你拿NSTimeZone寻找DayLight储蓄选项。

+0

再次感谢.... –