[ios]NSDateFormatter 为什么无法解析此日期?

发布时间: 2017/3/21 23:02:18
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有问题得到 NSDateFormatter,认识到这一点我在通过的日期。很确信它已经跟平日,但我想不通。

NSString *testDate = @"20130412 Friday";
NSDateFormatter *df = [[NSDateFormatter alloc] init];
df.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
df.dateFormat = @"yyyyMMdd cccc";
NSDate *result = [df dateFromString:testDate];
NSLog(@"test: %@, result: %@", testDate, result);

这会给我结果日期 1999年-12-30。 我曾尝试在平日,哎,哎,但它并没有帮助。卸下平日似乎工作,但并不能解释是什么错误我的日期格式。

解决方法 1:

我不明白为何平日会有。它创造了一个不一致的日期的可能性。你觉得"20130412 星期二"呢?(未来的读者的注意︰ 20130412 事实上是星期五)我检查了http://userguide.icu-project.org/formatparse/datetime ,能找到没有禁止添加星期几,但好像对我的好主意。

然而,NSDateFormatter 似乎并不正常运行。我测试了 iOS 6.1 模拟器和 OS X 10.8.3,,在这两个平台上得到相同的结果。我甚至扩大一点添加

id longResult;
NSError *error;
NSRange range = NSMakeRange(0, testDate.length);
if (![df getObjectValue:&longResult forString:testDate range:&range error:&error]) {
    NSLog(@"error: %@ reason:%@", error.localizedDescription, error.localizedFailureReason );
}

NSLog(@"result: %@", longResult);
NSLog(@"%@", NSStringFromRange(range));

你添加的代码下面和生产

2013-04-10 16:45:27.921 date formatter fun ios[47350:c07] test: 20130412 Friday, result: 1999-12-31 07:00:00 +0000
2013-04-10 16:45:27.922 date formatter fun ios[47350:c07] result: 1999-12-31 07:00:00 +0000
2013-04-10 16:45:27.922 date formatter fun ios[47350:c07] {0, 15}

它试图解析,返回 YES (成功解析),但将错误的答案放入结果。

官方微信
官方QQ群
31647020