Ios NSDateFormatter仅对某些对象返回nil

Ios NSDateFormatter仅对某些对象返回nil,ios,nsdate,Ios,Nsdate,我对NSDateFormatter有点困惑。我有以下代码: NSDate *createdDate = [fav objectForKey:@"created_at"]; NSString *b = [NSDateFormatter localizedStringFromDate:createdDate dateStyle:NSDateFormatterShortStyle

我对NSDateFormatter有点困惑。我有以下代码:

NSDate *createdDate = [fav objectForKey:@"created_at"];

NSString *b = [NSDateFormatter localizedStringFromDate:createdDate
                                             dateStyle:NSDateFormatterShortStyle
                                             timeStyle:NSDateFormatterFullStyle];

NSString *c = [NSDateFormatter localizedStringFromDate:[NSDate date]
                                             dateStyle:NSDateFormatterShortStyle
                                             timeStyle:NSDateFormatterFullStyle];
字符串c工作正常,但字符串b为零

我打印了两个NSDate对象,它们有一点不同:

[NSDate date] returns 2014-07-21 16:54:31 +0000
createdDate returns 2014-07-14T12:41:57.755-05:00

发生了什么事?

在传递日期之前,必须设置格式

formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm"];
[formatter stringFromDate:YourDate];
有了这个,您就有了一个来自date的字符串


希望它对您有用

您的
createdDate
是一个字符串(
NSString
对象),而不是
NSDate
。因此,
localizedStringFromDate:…
返回
nil
。您有一个指向NSString的NSDate引用。别那么做。为什么人们投票反对这个问题?它包括所有适当的代码和诊断问题所需的输出。你还想要什么?你有日期字符串。将其转换为
NSDate
,然后您可以使用您必须使用的代码将
NSDate
转换为新的字符串格式。@user3423369实际上,第一条注释很有帮助,并提前告诉了您问题所在。具体地说,我发现我必须使用的格式是“yyy-MM-dd'T'HH:MM:ss.SSSZ”因为时区和毫秒数。。。