iOS常用的公共方法详解

2020-01-18 19:03:31于海丽

使用如下:


NSArray *arr = @[@"guangzhou", @"shanghai", @"北京", @"henan", @"hainan"];
NSDictionary *dic = [Utilities dictionaryOrderByCharacterWithOriginalArray:arr];
NSLog(@"nndic: %@", dic);

输出结果如下:

iOS,方法

输出结果

7. 获取当前时间


//获取当前时间
//format: @"yyyy-MM-dd HH:mm:ss"、@"yyyy年MM月dd日 HH时mm分ss秒"
+ (NSString *)currentDateWithFormat:(NSString *)format{
 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
 [dateFormatter setDateFormat:format];
 return [dateFormatter stringFromDate:[NSDate date]];
}

8. 计算上次日期距离现在多久, 如 xx 小时前、xx 分钟前等


/**
 * 计算上次日期距离现在多久
 *
 * @param lastTime 上次日期(需要和格式对应)
 * @param format1  上次日期格式
 * @param currentTime 最近日期(需要和格式对应)
 * @param format2  最近日期格式
 *
 * @return xx分钟前、xx小时前、xx天前
 */
+ (NSString *)timeIntervalFromLastTime:(NSString *)lastTime
      lastTimeFormat:(NSString *)format1
       ToCurrentTime:(NSString *)currentTime
      currentTimeFormat:(NSString *)format2{
 //上次时间
 NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc]init];
 dateFormatter1.dateFormat = format1;
 NSDate *lastDate = [dateFormatter1 dateFromString:lastTime];
 //当前时间
 NSDateFormatter *dateFormatter2 = [[NSDateFormatter alloc]init];
 dateFormatter2.dateFormat = format2;
 NSDate *currentDate = [dateFormatter2 dateFromString:currentTime];
 return [Utilities timeIntervalFromLastTime:lastDate ToCurrentTime:currentDate];
}
+ (NSString *)timeIntervalFromLastTime:(NSDate *)lastTime ToCurrentTime:(NSDate *)currentTime{
 NSTimeZone *timeZone = [NSTimeZone systemTimeZone];
 //上次时间
 NSDate *lastDate = [lastTime dateByAddingTimeInterval:[timeZone secondsFromGMTForDate:lastTime]];
 //当前时间
 NSDate *currentDate = [currentTime dateByAddingTimeInterval:[timeZone secondsFromGMTForDate:currentTime]];
 //时间间隔
 NSInteger intevalTime = [currentDate timeIntervalSinceReferenceDate] - [lastDate timeIntervalSinceReferenceDate];
 //秒、分、小时、天、月、年
 NSInteger minutes = intevalTime / 60;
 NSInteger hours = intevalTime / 60 / 60;
 NSInteger day = intevalTime / 60 / 60 / 24;
 NSInteger month = intevalTime / 60 / 60 / 24 / 30;
 NSInteger yers = intevalTime / 60 / 60 / 24 / 365;
 if (minutes <= 10) {
  return @"刚刚";
 }else if (minutes < 60){
  return [NSString stringWithFormat: @"%ld分钟前",(long)minutes];
 }else if (hours < 24){
  return [NSString stringWithFormat: @"%ld小时前",(long)hours];
 }else if (day < 30){
  return [NSString stringWithFormat: @"%ld天前",(long)day];
 }else if (month < 12){
  NSDateFormatter * df =[[NSDateFormatter alloc]init];
  df.dateFormat = @"M月d日";
  NSString * time = [df stringFromDate:lastDate];
  return time;
 }else if (yers >= 1){
  NSDateFormatter * df =[[NSDateFormatter alloc]init];
  df.dateFormat = @"yyyy年M月d日";
  NSString * time = [df stringFromDate:lastDate];
  return time;
 }
 return @"";
}