2010-12-13 95 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