我有一篇文章发表日期,但需要多久以前发布与当前时间有关的文章。
因此,如果该文章是在上午8:45发布的,并且是在同一天的上午9:45,我需要能够有一个“1小时前”的UILabel。
目前,我的日期格式为“2013年5月5日下午5:35”:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
Feed *feedLocal = [headlinesArray objectAtIndex:indexPath.row];
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"MMMM d, yyyy h:mma"];
NSString *dateString = [df stringFromDate:feedLocal.published];
cell.publishedLabel.text = dateString;
}
我怎样才能将其转换为“1小时前”?谢谢!
修改
以下是我必须至少获得时间的当前方法:
-(NSString *)timeAgo {
NSDate *todayDate = [NSDate date];
double ti = [self timeIntervalSinceDate:todayDate];
ti = ti * -1;
if (ti < 1) {
return @"1s";
} else if (ti < 60) {
return @"1m";
} else if (ti < 3600) {
int diff = round(ti / 60);
return [NSString stringWithFormat:@"%dm", diff];
} else if (ti < 86400) {
int diff = round(ti / 60 / 60);
return[NSString stringWithFormat:@"%dh", diff];
} else if (ti < 2629743) {
int diff = round(ti / 60 / 60 / 24);
return[NSString stringWithFormat:@"%dd", diff];
} else if (ti < 31556926) {
int diff = round(ti / 60 / 60 / 24 / 30);
return [NSString stringWithFormat:@"%dmo", diff];
} else {
int diff = round(ti / 60 / 60 / 24 / 30 / 12);
return [NSString stringWithFormat:@"%dy", diff];
}
}
答案 0 :(得分:1)
我不确定timeAgo是什么方法,但是这里有一个解决方案,假设它与tableView在同一个viewController中:cellForRowAtIndexPath。如果你能澄清一下我的方法可以修改它并帮助你更多。
首先更改时间,以便接受日期并对其进行比较。
-(NSString *)timeSincePublished:(NSDate *)publicationDate
{
double ti = [publicationDate timeIntervalSinceNow];
上述方法中的其他所有内容都应该相同。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
Feed *feedLocal = [headlinesArray objectAtIndex:indexPath.row];
NSString *dateString = [self timeSincePublished:feedLocal.published];
cell.publishedLabel.text = dateString;
}