Objective c NSDateFormatter分析错误

Objective c NSDateFormatter分析错误,objective-c,ios6,nsdateformatter,Objective C,Ios6,Nsdateformatter,我有一系列的日期,它们都是“yyyyMMdd”格式的 问题在于,当NSDateFormatter试图解析“20121021”时,它仅在iOS 6上返回null 所以,我在iOS 4.x和5.x上测试了它,它工作得非常好。有人有同样的问题吗 代码如下: NSString *sdate = @"20121021"; NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; [dateFormat setDateFormat:@"yyy

我有一系列的日期,它们都是“yyyyMMdd”格式的

问题在于,当NSDateFormatter试图解析“20121021”时,它仅在iOS 6上返回null

所以,我在iOS 4.x和5.x上测试了它,它工作得非常好。有人有同样的问题吗

代码如下:

NSString *sdate = @"20121021";
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyyMMdd"];

NSDate *aDate = [dateFormat dateFromString:sdate];
[dateFormat release];
if (aDate){
    [dates addObject:aDate];
}else{
    NSLog(@"%@", sdate);
}

在ARC ios 6中试用-有效

在没有ARC ios 6的情况下试用-有效

NSString *sdate = @"20121021";
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyyMMdd"];
NSDate *aDate = [dateFormat dateFromString:sdate];
[dateFormat release];

if (aDate){
    NSLog(@"%@", aDate);

}else{
    NSLog(@"%@", aDate);
}
我的日志

2012-10-09 11:54:08.941 asd[97441:11303] 2012-10-20 18:30:00 +0000

找到了答案。。。我忘了为格式化程序设置NSTimeZone

新代码:

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];

[dateFormat setDateFormat:@"yyyyMMdd"];

NSDate *aDate = [dateFormat dateFromString:sdate];
[dateFormat release];

谢谢

是的,我找到了问题。我忘了设置NSTimeZone。顺便说一下,它对你不起作用。你试图解析20121021,结果得到了2012-10-20的输出…@FernandoRocha:是的,它起作用了。我的本地时区是+5:30,所以dateformatter获得的输出将是如此