2010-12-13 105 views
0

我已分配了一个日期格式,和我试图格式,它包含日期的字符串:NSDateFormatter DateFromString从RSS订阅返回(NULL)

formatter = [[NSDateFormatter alloc] init];
[formatter setDateStyle:NSDateFormatterShortStyle];
[formatter setTimeStyle:NSDateFormatterShortStyle];
NSString *date = [[stories objectAtIndex:storyIndex] objectForKey:@"date"];
NSDate *formattedDate = [formatter dateFromString:date];
NSLog(@"%@", formattedDate);

正如你看到的我是“NSLogging”格式化日期以查看它是否有效。不幸的是它没有工作,因此返回(NULL)。

请你能告诉我我做错了什么。

谢谢先进。

+0

NSLog也是日期字符串。它显示了什么? – Anna 2010-12-13 03:01:33

+0

其中一个日期字符串显示:周五,2010年12月10日23时48分36秒+0000 – MKDev 2010-12-13 03:03:28

回答

1

字符串“Fri,2010年12月10日23:48:36 +0000”不是“短风格”。

要分析可靠,设置语言环境和明确的日期格式:

formatter = [[NSDateFormatter alloc] init]; 
NSLocale *locale = [[[NSLocale alloc] 
    initWithLocaleIdentifier:@"en_US_POSIX"] autorelease]; 
[formatter setLocale:locale]; 
[formatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss Z"]; 
NSString *date = [[stories objectAtIndex:storyIndex] objectForKey:@"date"]; 
NSDate *formattedDate = [formatter dateFromString:date]; 
NSLog(@"%@", formattedDate); 


编辑:
为了然后在格式显示的NSDate formattedDate “星期五2010年12月10”,加这个代码在上述后:

NSDateFormatter *displayFormatter = [[NSDateFormatter alloc] init]; 
[displayFormatter setLocale:locale]; 
[displayFormatter setDateFormat:@"EEEE dd MMMM yyyy"]; 
NSString *displayDate = [displayFormatter stringFromDate:formattedDate]; 
NSLog(@"displayDate = %@", displayDate); 
[displayFormatter release]; 

对于区域设置的说明见Apple QA1480
有关日期格式的解释,请参阅Unicode Date Format Patterns

+0

感谢那,但它仍然返回(NULL) – MKDev 2010-12-13 03:24:35

+0

(那你为什么接受答案?)无论如何,替换'NSString * date = ...'NSString * date = @“Fri,2010年12月10日23:48:36 +0000”;'它是否仍然返回null? – Anna 2010-12-13 03:29:53

+0

不,它回来了:2010-12-10 23:48:36 +0000 – MKDev 2010-12-13 03:32:03