2013-05-09 57 views
0

我不能让NSDate为我的生活工作,即使我认为我已经扫描堆栈溢出的问题,所以帮助将不胜感激。字符串NSDate问题

- (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 

这我想变成:五月 8,2013 6:45 PM

我已经尝试使用:

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)。谢谢您的帮助!

+0

这很愚蠢:'NSDate * dateFromString = [[NSDate alloc] init];'。为什么要初始化一个变量,然后在下一个语句中覆盖该值? – 2013-05-09 22:46:39

+0

是的,我不认为这是正确的。 @rmaddy给了我一个完美的答案,帮助我完成下面的工作 – Realinstomp 2013-05-09 23:06:34

+0

@热舔酷评论bro – 2014-07-25 16:03:53

回答

2

从您发布的东西,它会出现feedLocal.publishedNSDate

因为你的目标是在此日期转换为字符串,你需要的东西是这样的:

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]; 

做到这一点,而不是设置一个特定的日期格式。然后,日期和时间将显示为适用于您的应用的所有用户,而不仅仅是特定国家/地区的用户。

3

您分配一个NSDateNSStringcell.publishedLabel.text = dateFromString;(我假设cell.publishedLabel.textNSString

编辑

我没有测试这个代码,但我想输出应该是确定的,如果不请请检查iOS date formatting guide

因此,在解析字符串并创建NSDate实例后,请添加以下代码:

EDIT 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]; 
+0

感谢您的回复!是的,'cell.publishedLabel.text'是一个'NSString',但我想要的格式不同,我不知道如何得到这个工作? – Realinstomp 2013-05-09 21:57:17

+0

请检查我编辑的回复。 – danypata 2013-05-09 22:04:55

+0

您是否将其与我的一些代码结合在一起,还是您正在使用的3行?因为这三条线对我来说不起作用,但我无法弄清楚还有什么其他的暗示将它们结合在一起呢? – Realinstomp 2013-05-09 22:15:23