我希望能够干净地在表格的标题中格式化我的日期。这是我的代码:
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
id <NSFetchedResultsSectionInfo> sectionInfo = [[self.fetchedResultsController sections] objectAtIndex:section];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
NSDate *date = [dateFormatter dateFromString:sectionInfo.name];
NSString *formattedDate = [dateFormatter stringFromDate:date];
NSLog(@"%@", formattedDate);
return formattedDate;
}
使用此代码,由于date为null,因此不会出现任何节标题。由于某种原因,dateFromString无法将字符串sectionInfo.name转换为NSDate。有什么建议吗?
答案 0 :(得分:2)
考虑到您的评论,如果您指出日期标题的格式为2012-03-12 07:00:00 +0000,则可以确定问题是格式化。
NSDateFormatterMediumStyle的格式为“1937年11月23日” - 这是你的不匹配:)
你必须使用类似的东西:
[dateFormatter setDateStyle:@"yyyy-dd-MM HH:mm:ss ZZZ"];
从您拥有的格式的字符串中创建NSDate。应该工作。
如果你需要使用NSDateFormatterMediumStyle格式返回一个NSString,那么只有在获得NSDate之后,才能像以前一样将它应用到dateFormatter对象:
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
然后使用此dateFormatter从您获得的日期获取字符串:
NSString *formattedDate = [dateFormatter stringFromDate:date];
答案 1 :(得分:0)
在视图中加载我设置了我的日期解析器和日期格式化程序
@property(nonatomic, strong) NSDateFormatter *dateParser;
@property(nonatomic, strong) NSDateFormatter *dateFormatter;
@property(nonatomic, strong) NSDateFormatter *timeFormatter;
- (void)viewDidLoad {
[super viewDidLoad];
self.dateParser = [[NSDateFormatter alloc] init];
self.dateFormatter = [[NSDateFormatter alloc] init];
[self.dateParser setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"];
[self.dateFormatter setDateStyle:NSDateFormatterFullStyle];
...
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
id <NSFetchedResultsSectionInfo> sectionInfo = [[self.fetchedResultsController sections] objectAtIndex:section];
NSDate *date = [self.dateParser dateFromString:sectionInfo.name];
return [self.dateFormatter stringFromDate:date];
}