将NSDATE转换为相对格式,如“Just Now”,“Yesterday”

时间:2014-05-19 09:57:10

标签: time nsdateformatter relative

我正在将nsdate转换为实际格式,如“Just Now”,“Yesterday”,“一周前”,“一个月前”,“一年前”,“日期不是这样”

我已经写了以下mehtod,它的工作很棒

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath   *)indexPath
  {

     NSDate *placeDate = [self.details valueForKey:@"date"];
    NSTimeInterval timeSince = [placeDate timeIntervalSinceNow];
    NSLog(@"%f", timeSince);


      self.dateFormatter = [[NSDateFormatter alloc] init] ;
     [self.dateFormatter setTimeZone:[NSTimeZone defaultTimeZone]];
     [self.dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en"] ];
     [self.dateFormatter setTimeZone:[NSTimeZone defaultTimeZone]];        


    if (timeSince > -60) {

    cell.myDate.text = [NSString stringWithFormat:@"Just Now"];     
    }
    else if (timeSince <= -60 && timeSince > -3600){

    [self.dateFormatter setTimeStyle:NSDateFormatterShortStyle];
        cell.myDate.text = [ self.dateFormatter stringFromDate:[self.details    valueForKey:@"date"]];
    }
    else if (timeSince <= -3600 && timeSince > -86400){
    [self.dateFormatter setTimeStyle:NSDateFormatterShortStyle];
        cell.myDate.text = [ self.dateFormatter stringFromDate:[self.details valueForKey:@"date"]];
    }
    else if (timeSince <= -86400 && timeSince > -604800){

        cell.myDate.text = [NSString stringWithFormat:@"Yesterday"];
    }
    else if (timeSince <= -604800 && timeSince > -2592000){

    [self.dateFormatter setDateFormat:@"EEEE"];

        cell.myDate.text = [ self.dateFormatter stringFromDate:[self.details valueForKey:@"date"]];
    }
    else if (timeSince <= -2592000 && timeSince > -31536000){

     [self.dateFormatter  setDateFormat:@"yyyy/M/d"];
        cell.myDate.text = [ self.dateFormatter stringFromDate:[self.details valueForKey:@"date"]];
    }

     [self.dateFormatter  setDateFormat:@"yyyy/M/d"];
                 cell.myDate.text = [ self.dateFormatter stringFromDate:[self.details valueForKey:@"date"]];
    else {

                   [self.dateFormatter  setDateFormat:@"yyyy/M/d"];
        cell.myDate.text = [ self.dateFormatter stringFromDate:[self.details valueForKey:@"date"]];
    }


 return cell;
  }

但是我的问题是我试图让它改变相对时间如果日期从新的一天中午12:00开始

例如,如果我添加一个新日期,可以说在凌晨2点它会给我格式字符串“Just Now”

但是直到第二天凌晨2点才会改变,所以我必须等待24小时才会改变!!

并且我希望它将格式字符串更改为“昨天”,即使新的一天开始,这意味着如果时间变为中午12点而不是等到24小时后才从添加日期开始。

所以任何人都可以帮我解决这个问题

0 个答案:

没有答案