iOS-OC根据时间戳获取距离现在的状态(刚刚,分钟前,今天,昨天)

来源:互联网 发布:淘宝开店认证失败2017 编辑:程序博客网 时间:2024/05/16 12:55
  1. - (NSString *)distanceTimeWithBeforeTime:(double)beTime  
  2. {  
  3.     NSTimeInterval now = [[NSDatedate]timeIntervalSince1970];  
  4.     double distanceTime = now - beTime;  
  5.     NSString * distanceStr;  
  6.   
  7.     NSDate * beDate = [NSDatedateWithTimeIntervalSince1970:beTime];  
  8.     NSDateFormatter * df = [[NSDateFormatteralloc]init];  
  9.     [df setDateFormat:@"HH:mm"];  
  10.     NSString * timeStr = [df stringFromDate:beDate];  
  11.   
  12.     [df setDateFormat:@"dd"];  
  13.     NSString * nowDay = [df stringFromDate:[NSDate date]];  
  14.     NSString * lastDay = [df stringFromDate:beDate];  
  15.   
  16.     if (distanceTime < 60) {//小于一分钟  
  17.         distanceStr = @"刚刚";  
  18.     }  
  19.     else if (distanceTime <60*60) {//时间小于一个小时  
  20.         distanceStr = [NSString stringWithFormat:@"%ld分钟前",(long)distanceTime/60];  
  21.     }  
  22.         else if(distanceTime <24*60*60 && [nowDayintegerValue] == [lastDay integerValue]){//时间小于一天  
  23.             distanceStr = [NSString stringWithFormat:@"今天 %@",timeStr];  
  24.     }  
  25.     else if(distanceTime<24*60*60*2 && [nowDayintegerValue] != [lastDay integerValue]){  
  26.   
  27.         if ([nowDay integerValue] - [lastDay integerValue] ==1 || ([lastDay integerValue] - [nowDayintegerValue] > 10 && [nowDayintegerValue] == 1)) {  
  28.                 distanceStr = [NSString stringWithFormat:@"昨天 %@",timeStr];  
  29.     }  
  30.     else{  
  31.         [df setDateFormat:@"MM-dd HH:mm"];  
  32.         distanceStr = [df stringFromDate:beDate];  
  33.     }  
  34.   
  35.     }  
  36.     else if(distanceTime <24*60*60*365){  
  37.         [df setDateFormat:@"MM-dd HH:mm"];  
  38.         distanceStr = [df stringFromDate:beDate];  
  39.     }  
  40.     else{  
  41.         [df setDateFormat:@"yyyy-MM-dd HH:mm"];  
  42.         distanceStr = [df stringFromDate:beDate];  
  43.     }  
  44.     return distanceStr;  
  45. }  
0 0