OC学习:OC自定义方法以字符串的形式返回输入时间与现在时间的差距

// 在Tool.m文件中编写方法

//输入字符串格式为yyyy年MM月dd日 HH:mm:ss,返回与现在时间的差距,字符串形式

+(NSString *)handleDateFromString:(NSString *)dateString{
    NSString *string;
    NSInteger data = 0;
    
    //将字符串转换为NSDate
    NSDateFormatter *dateFormatter = [NSDateFormatter new];
    //  1.设置字符串的格式
    [dateFormatter setDateFormat:@"yyyy年MM月dd日 HH:mm:ss"];
    //  2.转换
    NSDate *dateForString = [dateFormatter dateFromString:dateString];
    //  3.求出与现在的时间爱你差,过去 减 现在 为一个负数。
    NSTimeInterval timeTnterval = [dateForString timeIntervalSinceNow];
    //  4.过去的时间大于现在的时间也就是未来。
    if(timeTnterval > 0){
        string = @"你输入的时间是未来时间!error";
    };
    //  5.转换为正数比较,以确定范围
    if (timeTnterval*-1 > 60*60*24*365) {
    //  6.时间超过一年,字符串放回 年月日
        //  6.1 找到字符串中 年、月、日 的范围,找到“日”的位置就找到了年、月、日 的范围。
        NSRange range = [dateString rangeOfString:@"日"];
        //  6.2 NSMakeRange(0, range.location+range.length)为年、月、日 的范围。用substringWithRange方法放回范围内的字符串到string中
        string = [dateString substringWithRange:NSMakeRange(0, range.location+range.length)];
    //  7.时间超过一个月则返回“‘多少个’月之前”,在这里我们不考虑每一个月份的不同最大天数的,都用31天,因为超过了31天就一定是一个月之前了,比起30天和29天要更加的贴切。
    }else if(timeTnterval*-1 > 60*60*24*31){
    //  8.求已经超过多少个月分
        data = (NSInteger)timeTnterval/(60*60*24*31)*-1;
    //  9.设置返回字符串的内容
        string = [NSString stringWithFormat:@" %ld月之前",data];
    //  10.其他雷同
    }else if(timeTnterval*-1 > 60*60*24){
        data = (NSInteger)timeTnterval/(60*60*24)*-1;
        string = [NSString stringWithFormat:@" %ld天之前",data];
    
    }else if(timeTnterval*-1 > 60*60){
        data = (NSInteger)timeTnterval/(60*60)*-1;
        string = [NSString stringWithFormat:@"%ld小时之前",data];
        
    }else if(timeTnterval*-1 > 60){
       data = (NSInteger)timeTnterval/60*-1;
        string = [NSString stringWithFormat:@"%ld分钟之前",data];
        
    }else if(timeTnterval < 60){
        string = @"刚刚";
    }
    
    return string;
}
// 输入一个时间,返回与现在时间的差距,字符串形式
+(NSString *)handleDateFromdate:(NSDate *)date{
    NSString *string;
    NSInteger data = 0;
    NSTimeInterval timeTnterval = [date timeIntervalSinceNow];
    if(timeTnterval > 0){
        string = @"error";
    };
    if (timeTnterval*-1 > 60*60*24*365) {
        NSDateFormatter *dateFormatter = [NSDateFormatter new];
        [dateFormatter setDateFormat:@"yyyy年MM月dd日 HH:mm:ss"];
        NSString *dateString = [dateFormatter stringFromDate:date];
        NSRange range = [dateString rangeOfString:@"日"];
        string = [dateString substringWithRange:NSMakeRange(0, range.location+range.length)];
    }else if(timeTnterval*-1 > 60*60*24*30){
        data = (NSInteger)timeTnterval/(60*60*24*30)*-1;
        string = [NSString stringWithFormat:@" %ld月之前",data];
        
    }else if(timeTnterval*-1 > 60*60*24){
        data = (NSInteger)timeTnterval/(60*60*24)*-1;
        string = [NSString stringWithFormat:@" %ld天之前",data];
        
    }else if(timeTnterval*-1 > 60*60){
        data = (NSInteger)timeTnterval/(60*60)*-1;
        string = [NSString stringWithFormat:@"%ld小时之前",data];
        
    }else if(timeTnterval*-1 > 60){
        data = (NSInteger)timeTnterval/60*-1;
        string = [NSString stringWithFormat:@"%ld分钟之前",data];
        
    }else if(timeTnterval < 60){
        string = @"刚刚";
    }
    return string;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值