解析日期字符串给出 [__NSDate length] 无法识别的选择器异常
Parsing a date string gives [__NSDate length] unrecognized selector exception
我有一个 NSDictionary
保存这样的日期:
"2015-05-23 21:04:11 +0000"
我正在尝试像这样解析它:
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss z"];
NSDate *date = [dateFormat dateFromString:[item valueForKey:@"enddata"]];
我还尝试将最后一行更改为:
NSDate *date = [dateFormat dateFromString:[[item valueForKey:@"enddata"] stringValue]];
但我的错误总是一样的:
[__NSDate length]: unrecognized selector sent to instance 0x78ec0170
我看过像 this, or this, or this, and many more 这样的帖子。我尝试过不同的格式,例如:
- @"yyyy-MM-dd HH:mm:ss z"
- @"yyyy-MM-dd HH:mm:ss zzzz"
- @"yyyy-MM-dd HH:mm:ss Z"
- @"yyyy-MM-dd HH:mm:ss +zzzz"
- @"yyyy-MM-dd HH:mm:ss z"
- @"yyyy-MM-dd'T'HH:mm:ss'Z'"
- @"yyyy-MM-dd hh:mm:ss a"
- @"yyyy-MM-dd HH:mm:ss a"
- @"yyyy-MM-dd HH:mm:ss zzz"
- @"yyyy-MM-dd hh:mm:ss zzzz"
但还是一样SIGABRT
有人知道哪里出了问题吗?
我会冒险猜测 item[@"enddata"]
已经是一个 NSDate
对象而不是 NSString
对象。
验证方式:
NSLog(@"enddata is type %@", NSStringFromClass([item[@"enddata"] class]));
也不要使用 valueForKey:
,而是使用 objectForKey:
或我在上面使用的新访问语法。
这个
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss z"];
NSDate *date = [dateFormat dateFromString:@"2015-05-23 21:04:11 +0000"];
NSLog(@"date: %@", [dateFormat stringFromDate:date]);
对我来说很好。
NSLog
是你的朋友。也许你应该 NSLog
item
的值,或者
的值
[item valueForKey:@"enddata"]
甚至
[[item valueForKey:@"enddata"] stringValue]
因为如果后者是所需格式的 NSString
,那么用它调用 dateFromString
应该可以正常工作。
我有一个 NSDictionary
保存这样的日期:
"2015-05-23 21:04:11 +0000"
我正在尝试像这样解析它:
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss z"];
NSDate *date = [dateFormat dateFromString:[item valueForKey:@"enddata"]];
我还尝试将最后一行更改为:
NSDate *date = [dateFormat dateFromString:[[item valueForKey:@"enddata"] stringValue]];
但我的错误总是一样的:
[__NSDate length]: unrecognized selector sent to instance 0x78ec0170
我看过像 this, or this, or this, and many more 这样的帖子。我尝试过不同的格式,例如:
- @"yyyy-MM-dd HH:mm:ss z"
- @"yyyy-MM-dd HH:mm:ss zzzz"
- @"yyyy-MM-dd HH:mm:ss Z"
- @"yyyy-MM-dd HH:mm:ss +zzzz"
- @"yyyy-MM-dd HH:mm:ss z"
- @"yyyy-MM-dd'T'HH:mm:ss'Z'"
- @"yyyy-MM-dd hh:mm:ss a"
- @"yyyy-MM-dd HH:mm:ss a"
- @"yyyy-MM-dd HH:mm:ss zzz"
- @"yyyy-MM-dd hh:mm:ss zzzz"
但还是一样SIGABRT
有人知道哪里出了问题吗?
我会冒险猜测 item[@"enddata"]
已经是一个 NSDate
对象而不是 NSString
对象。
验证方式:
NSLog(@"enddata is type %@", NSStringFromClass([item[@"enddata"] class]));
也不要使用 valueForKey:
,而是使用 objectForKey:
或我在上面使用的新访问语法。
这个
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss z"];
NSDate *date = [dateFormat dateFromString:@"2015-05-23 21:04:11 +0000"];
NSLog(@"date: %@", [dateFormat stringFromDate:date]);
对我来说很好。
NSLog
是你的朋友。也许你应该 NSLog
item
的值,或者
[item valueForKey:@"enddata"]
甚至
[[item valueForKey:@"enddata"] stringValue]
因为如果后者是所需格式的 NSString
,那么用它调用 dateFromString
应该可以正常工作。