即使正确设置NSTimezone,仍然存在NSDateFormatter结果问题,为什么?

结果仍然是前一天,我只是问自己为什么,因为NSTimeZone设置得当,对我的国家(意大利,罗马)来说是正确的,这里是我的代码存根,任何想法?

NSString *dateString = @"03/07/2008"; NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setFormatterBehavior:[NSDateFormatter defaultFormatterBehavior]]; [formatter setDateFormat:@"dd/MM/yyyy"]; [formatter setLocale:[NSLocale currentLocale]]; [formatter setTimeZone:[NSTimeZone systemTimeZone]]; NSDate *dateFromString = [formatter dateFromString:dateString]; [formatter release]; 

dateFromString的结果是2008-07-02 22:00:00 +0000

我已经寻找其他解决方案,但常见的答案是正确设置时区,在我的情况下,它设置正确但问题仍然存在。

这是正确的,因为默认情况下, NSDate将在其描述+0000返回UTC日期。 您比UTC早了几个小时,因此前一天的时间为22:00:00。 我是-5,我的结果UTC是2008-07-03 04:00:00 +0000 (DST)。 日期是正确的,它只是以UTC显示,如果你试图在某处正确显示它只需使用日期格式化器再次获取一个字符串。

 ... NSDate *dateFromString = [formatter dateFromString:dateString]; NSString *stringFromDate = [formatter stringFromDate:dateFromString]; [formatter release]; NSLog(@"%@ : %@", dateFromString, stringFromDate); 

2008-07-03 04:00:00 +0000:03/07/2008