我在将rss pubdate字符串转换为NSDate对象时遇到了一些问题。
<pubDate>Fri, 09 Sep 2011 15:26:08 +0200</pubDate>
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"EEE, d MMM yyyy HH:mm:ss Z"];
NSDate *date = [dateFormatter dateFromString:currentDate];
NSLog(@"DateObject : '%@'", date);
[dateFormatter release];我总是得到
[44157:10d03] DateObject : '(null)'发布于 2011-09-11 00:43:53
您需要:
dd而不是d,因为日期是zero-paddedZZ而不是Z,因为它不包括时区缩写名称更多信息:http://unicode.org/reports/tr35/tr35-4.html#Date_Format_Patterns
当我运行以下命令时:
int main (int argc, const char * argv[]) {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSString *str = @"Fri, 09 Sep 2011 15:26:08 +0200";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss ZZ"];
NSDate *date = [dateFormatter dateFromString:str];
NSLog(@"DateObject : %@", date);
[dateFormatter release];
[pool drain];
return 0;
}我明白了:
EmptyFoundation19926:407 DateObject : 2011-09-09 13:26:08 +0000
发布于 2015-10-19 15:29:36
首先,您可以尝试以下代码:
NSString *str = @"Mon, 19 Oct 2015 14:27:28 +0800";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss ZZ"];
NSDate *date = [dateFormatter dateFromString:str];
NSLog(@"DateObject : %@", date);但是,如果您的DateObject仍然是null格式,则您的区域设置未正确定位为"en_US_POSIX"格式。您需要更改您的区域设置。
NSString *str = @"Mon, 19 Oct 2015 14:27:28 +0800";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss ZZ"];
NSLocale *enUSPOSIXLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
[dateFormatter setLocale:enUSPOSIXLocale];
NSDate *date = [dateFormatter dateFromString:str];
NSLog(@"DateObject : %@", date);结果是:
DateObject : 2015-10-19 06:27:28 +0000
发布于 2014-04-07 17:26:17
使用:
NSArray *array=[string componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];将pubDate按空格和换行符拆分,然后使用数组的索引获取要显示的每个元素。
https://stackoverflow.com/questions/7373035
复制相似问题