美文网首页
iOS时间格式化“刚刚、几分钟前、几小时前”等,[包括时间戳&格

iOS时间格式化“刚刚、几分钟前、几小时前”等,[包括时间戳&格

作者: 念念不忘一个丫头的容 | 来源:发表于2017-07-30 11:33 被阅读0次

    前言:
    iOS中把时间转化成“刚刚、几分钟前、几小时前、几天前、某月某日几点几分、.......”格式
    这就需要看后台返回什么样的类型了,在项目中碰到的无非就是,格式化后和时间戳了。所以,这次把这两种我都结合起来,放到这里,直接拿去用!

    一、返回格式化后的时间 2016-10-11 12:33:33
    pragma mark 时间格式转化

    注意:数据返回类型为格式化后的时间 eg: "2016-10-11 12:33:33"

       -(NSString *) compareCurrentTime:(NSString *)str
    {
        
        //把字符串转为NSdate
        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
        NSDate *timeDate = [dateFormatter dateFromString:str];
        
        //得到与当前时间差
        NSTimeInterval timeInterval = [timeDate timeIntervalSinceNow];
        timeInterval = -timeInterval;
        //标准时间和北京时间差8个小时
        // timeInterval = timeInterval - 86060;
        long temp = 0;
        NSString *result;
        if (timeInterval < 60) {
            
            result = [NSString stringWithFormat:@"刚刚"];
            
        }
        else if((temp = timeInterval/60) <60){
            
            result = [NSString stringWithFormat:@"%ld分钟前",temp];
            
        }
        
        else if((temp = temp/60) <24){
            result = [NSString stringWithFormat:@"%ld小时前",temp];
        }
        
        else if((temp = temp/24) <30){
            result = [NSString stringWithFormat:@"%ld天前",temp];
        }
        
        else if((temp = temp/30) <12){
            result = [NSString stringWithFormat:@"%ld月前",temp];
        }
        else{
            temp = temp/12;
            result = [NSString stringWithFormat:@"%ld年前",temp];
        }
        
        return  result;
        
    }
    
    

    二、返回的是时间戳
    pragma mark 时间格式转化

    注意:后台返回的时间戳包括10位或者有小数点。
    eg:“1480064761” 1480064761.000000

    -(NSString *)distanceTimeWithBeforeTime:(double)beTime
    {
        NSTimeInterval now = [[NSDate date]timeIntervalSince1970];
        double distanceTime = now - beTime;
        NSString *distanceStr;
        
        NSDate *beDate = [NSDate dateWithTimeIntervalSince1970:beTime];
        NSDateFormatter* df = [[NSDateFormatter alloc]init];
        [df setDateFormat:@"HH:mm"];
        NSString * timeStr = [df stringFromDate:beDate];
        
        [df setDateFormat:@"dd"];
        NSString *nowDay = [df stringFromDate:[NSDate date]];
        NSString *lastDay = [df stringFromDate:beDate];
        
        if (distanceTime < 60) {
            
            distanceStr = @"刚刚";
            
        }
        else if (distanceTime <60*60) {
            
            distanceStr = [NSString stringWithFormat:@"%ld分钟前",(long)distanceTime/60];
            
        }
        else if(distanceTime <246060 && [nowDay integerValue] == [lastDay integerValue]){
            
            distanceStr = [NSString stringWithFormat:@"今天 %@",timeStr];
            
        }
        else if(distanceTime<246060*2 && [nowDay integerValue] != [lastDay integerValue]){
            
            if ([nowDay integerValue] - [lastDay integerValue] ==1 || ([lastDay integerValue] - [nowDay integerValue] > 10 && [nowDay integerValue] == 1)) {
                distanceStr = [NSString stringWithFormat:@"昨天 %@",timeStr];
            }
            else{
                [df setDateFormat:@"MM-dd HH:mm"];
                distanceStr = [df stringFromDate:beDate];
            }
            
        }
        else if(distanceTime <246060*365){
            
            [df setDateFormat:@"MM-dd HH:mm"];
            distanceStr = [df stringFromDate:beDate];
            
        }
        else{
            
            [df setDateFormat:@"yyyy-MM-dd HH:mm"];
            distanceStr = [df stringFromDate:beDate];
            
        }
        return distanceStr;
    }
    
    

    三、捎带福利、获取当前时间戳方法,返回10位。
    pragma mark 获取当前时间戳

    -(NSString *)getCurrentTime{
        NSDate *senddata = [NSDate date];
        NSString *date2 = [NSString stringWithFormat:@"%ld", (long)[senddata timeIntervalSince1970]];
        return date2;
    }
    

    相关文章

      网友评论

          本文标题:iOS时间格式化“刚刚、几分钟前、几小时前”等,[包括时间戳&格

          本文链接:https://www.haomeiwen.com/subject/grbhlxtx.html