0

記事が公開された日付はありますが、現在の時刻からどれだけ前に公開されたかを取得する必要があります。

したがって、記事が午前 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];
    }
}
4

1 に答える 1

1

timeAgo がどのメソッドであるかはわかりませんが、tableView:cellForRowAtIndexPath と同じ viewController にあると仮定したソリューションを次に示します。その方法を明確にしていただければ、これを修正してさらに支援できるかもしれません。

最初に timeAgo を変更して日付を取得し、それを比較します。

-(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;
}
于 2013-05-10T02:20:01.763 に答える