2012-10-08 71 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]; 

感謝