每当我使用此代码时
NSString *theDateS = [name valueForKey:@"startDate"];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd hh:mm:ss a"];
NSDate *theDateFormatted = [dateFormat dateFromString: theDateS];
我收到了一条错误消息 " NSInvalidArgumentException',原因:' - [__ NSDate长度]:无法识别的选择器发送到实例0x9249290'"
我试图改变格式2014-06-10 16:00:00 +0000格式化2014-06-10 04:00:00 PM请帮助:(
答案 0 :(得分:3)
变量theDateS
不是您认为的那样:
NSString * theDateS = [name valueForKey:@"startDate"];
实际上是NSDate
,而不是NSString
。 Obj-c可能很奇怪。
如果你需要将它格式化为NSString
,这是关于Stack Overflow的一个非常好的研究主题:
答案 1 :(得分:1)
您的整个代码块可以是:
NSDate *date = name[@"startDate"];
由于错误表明您实际上是从NSDate
词典中获得name
。
请注意,如果您只是在NSLog
上使用NSDate
,它将以UTC格式显示。
如果您想将日期转换为特定的字符串格式以显示给用户,请按以下步骤更新您的代码:
NSDate *date = name[@"startDate"];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd hh:mm:ss a"];
NSString *theDateFormatted = [dateFormat stringFromDate:date];