我无法让NSDate为我的生活工作,甚至以为我已经在Stack Overflow上扫描了这些问题,所以非常感谢帮助。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *publishedText = [NSString stringWithFormat:@"%@", feedLocal.published];
cell.publishedLabel.text = publishedText;
return cell;
}
给我字符串:
2013-05-08 18:09:37 +0000
我试图变成: 2013年5月8日下午6:45
我尝试过使用:
NSString *publishedText = [NSString stringWithFormat:@"%@", feedLocal.published];
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyy-MM-dd HH:mm:ss.SSSSSS"];
NSDate *dateFromString = [[NSDate alloc] init];
dateFromString = [df dateFromString:publishedText];
cell.publishedLabel.text = dateFromString;
但它不起作用并显示指针类型不兼容的警告(NSString
到NSDate_strong
)。谢谢你的帮助!
答案 0 :(得分:3)
您正在为NSDate
NSString
分配cell.publishedLabel.text = dateFromString;
(我认为cell.publishedLabel.text
是NSString
。
修改强>
我没有测试此代码,但我认为输出应该没问题,请检查iOS date formatting guide
因此,在解析字符串并创建NSDate
实例后,添加以下代码:
编辑2 - 完整代码
NSString *publishedText = [NSString stringWithFormat:@"%@", feedLocal.published];
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyy-MM-dd HH:mm:ss z"];
NSDate *dateFromString = [df dateFromString:publishedText];
NSDateFormatter *secondDateFormatter= [[NSDateFormatter alloc] init];
[secondDateFormatter setDateStyle:NSDateFormatterLongStyle];
cell.publishedLabel.text = [secondDateFormatter stringFromDate:dateFromString];
答案 1 :(得分:2)
根据您发布的内容,feedLocal.published
似乎是NSDate
。
由于您的目标是将此日期转换为字符串,因此您需要以下内容:
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"MMMM d, yyyy h:mma"]; // this matches your desired format
NSString *dateString = [df stringFromDate:feedLocal.published];
cell.publishedLabel.text = dateString;
由于您的应用可以被全世界的人使用,我建议您设置这样的日期格式化程序:
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateStyle:NSDateFormatterLongStyle];
[df setTimeStyle:NSDateFormatterShortStyle];
执行此操作而不是设置特定的日期格式。然后,日期和时间将适合您应用的所有用户,而不仅仅是特定国家/地区的用户。