我已经分配了日期格式化程序,我正在尝试格式化包含日期的字符串:
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 :(得分: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);
修改强>
然后以“2010年12月10日星期五”的格式显示NSDate formattedDate,在上面添加此代码后:
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。