0

我有一系列日期,所有日期都采用“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);
}
4

2 回答 2

0

Tried in ARC ios 6 - worked

Tried without ARC ios 6- Worked

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

my log

2012-10-09 11:54:08.941 asd[97441:11303] 2012-10-20 18:30:00 +0000
于 2012-10-09T06:27:14.730 回答
0

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

新代码:

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

[dateFormat setDateFormat:@"yyyyMMdd"];

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

谢谢

于 2012-10-09T18:33:50.100 回答