2012-10-08 47 views
0

我有一个日期范围,他们都是“yyyyMMdd”格式。NSDateFormatter解析错误

问题是,当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); 
} 

回答

0

在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); 
} 

我的日志ARC IOS 6-

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

是啊,我发现这个问题。我忘了设置NSTimeZone。 –

+0

顺便说一下,它不适合你。你试图解析20121021并得到2012-10-20的输出... –

+0

@FernandoRocha:是的,它的工作看到我的本地时区是+5:30所以dateformatter获得的输出将是如此 –

0

找到答案...我忘了设置N格式化程序的STimeZone。

新代码:

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

[dateFormat setDateFormat:@"yyyyMMdd"]; 

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

感谢