字符串到NSDate问题

时间:2013-05-09 21:40:43

标签: ios nsdate

我无法让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;

但它不起作用并显示指针类型不兼容的警告(NSStringNSDate_strong)。谢谢你的帮助!

2 个答案:

答案 0 :(得分:3)

您正在为NSDate NSString分配cell.publishedLabel.text = dateFromString;(我认为cell.publishedLabel.textNSString

修改

我没有测试此代码,但我认为输出应该没问题,请检查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];

执行此操作而不是设置特定的日期格式。然后,日期和时间将适合您应用的所有用户,而不仅仅是特定国家/地区的用户。