NSDateFormatter dateFromString:返回nil

时间:2011-07-20 11:58:16

标签: ios objective-c cocoa-touch nsdate nsdateformatter

我遇到NSDateFormatter的{​​{1}}方法问题。

我有以下日期:dateFromString,但Tue, 12 Jul 2011 20:18:26 GMT似乎无法识别它并返回NSDateFormatter

这是我试过的:

(null)

我做错了什么?

3 个答案:

答案 0 :(得分:4)

在这种情况下,您需要设置dateFormat以匹配字符串中日期的格式。请尝试以下方法:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"ddd, dd MMM YYYY HH:MM:SS ZZZ"];
NSDate *date = [dateFormatter dateFromString:@"Tue, 12 Jul 2011 20:18:26 GMT"];
[dateFormatter setDateFormat:@"dd/MM/yyyy HH:MM:SS"];
NSString *newFormattedDate = [dateFormatter stringFromDate:date];

NSLog(@"Date: %@ || %@",datem newFormattedDate);

答案 1 :(得分:2)

您的问题是您的日期格式@"dd/MM/yyyy HH:MM:SS"与日期字符串@"Tue, 12 Jul 2011 20:18:26 GMT"不符。您需要使用不同的日期格式。

答案 2 :(得分:2)

您要解析的字符串与您在NSDateFormatter上设置的格式字符串不匹配。您输入的格式为:

dd/MM/yyyy HH:MM:SS

...匹配字符串,如:

"15/07/2011 10:30:01"

如果您希望它与Tue, 12 Jul 2011 20:18:26 GMT匹配,则需要更改格式。你可能会有更好的运气:

[dateFormatter setDateFormat:@"E, dd MMM yyyy HH:MM:SS z"];

您可能会发现此needlessly complex documentation有用。