NSString的扩展(Category)

| 用到的其他的扩展
NSDate 的扩展(Category) 时间处理 针对评论时间处理

描述: 通过传入一个日期字符串(例如:2017-09-27 13:21:47):返回有以下几种格式
  • 如果是上一年 直接返回 日期字符串
  • 如果是同一年
  • 一分钟之内 返回 @"刚刚"
  • 是昨天 返回 @"昨天 13:21:47 "
  • 同一天 返回@"几小时前或者几分钟前"
  • 几天前 返回 @"09-27 13:21:47"

.h 文件

#import 

@interface NSString (YYExtension)
+ (NSString *)yyDateWith:(NSString *)create_time;
@end

.m文件

#import "NSString+YYExtension.h"
#import "NSDate+YYExtension.h" // 引用头文件
@implementation NSString (YYExtension)

// 实现
+ (NSString *)yyDateWith:(NSString *)create_time{
    NSString * timeStr = nil;
    NSDateFormatter *fmt = [[NSDateFormatter alloc]init];
    fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";
    NSDate *createDate = [fmt dateFromString:create_time];
    // 判断
    if (createDate.isThisYear) { // 今年
        if (createDate.isToday) {
            NSDateComponents *comps = [[NSDate date] dateFrom:createDate]; // 现在已经是同一天了,通过这个方法可以计算出于为了得到小时数 分钟数
            if (comps.hour >= 1) { // 大于等于1小时
                timeStr = [NSString stringWithFormat:@"%zd小时前",comps.hour];
            }else if (comps.minute >= 1){ // 1小时 > 时间差 > 1分钟
                timeStr = [NSString stringWithFormat:@"%zd分钟前",comps.minute];
            }else{ // 一分钟以内
                timeStr = @"刚刚";
            }
        }else if (createDate.isYesterday){ // 昨天
            fmt.dateFormat = @"昨天 HH:mm:ss";
            timeStr = [fmt stringFromDate:createDate];
        }else{ // 09-09 12:22:32
            fmt.dateFormat = @"MM-dd HH:mm:ss";
            timeStr = [fmt stringFromDate:createDate];
        }
    }else{ //不是今年
        timeStr = create_time;
    }
    return timeStr;
}
@end

你可能感兴趣的:(NSString的扩展(Category))