时间戳 得到(几分钟前,今天HH:mm, 昨天HH:mm,MM-dd HH:mm , yyyy-MM-dd HH:mm)

本文介绍了一种方法,用于将毫秒级时间戳转换为更友好的时间格式,如“几分钟前”、“今天HH:mm”等。通过比较当前时间和目标时间的时间差,实现了不同时间范围内的格式化显示。

时间戳 得到(几分钟前,今天HH:mm, 昨天HH:mm,MM-dd HH:mm , yyyy-MM-dd HH:mm)(注意:是秒级 还是毫秒级)

//TODO: - 将毫秒级 时间戳 转换 为 刚刚 分钟前 昨天 HH:mm   MM-dd HH:mm

+ (NSString *)distanceTimeWithTimeString:(NSString *)str

{

    // 获取当前时时间戳秒级 1466386762.345715 十位整数 6位小数

    NSTimeInterval now = [[NSDate date]timeIntervalSince1970];

    

    NSTimeInterval beTime =[str doubleValue];

    //后台返回的是毫秒级的 故的转为秒级的

    beTime = beTime/1000;

    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 <24*60*60 && [nowDay integerValue] == [lastDay integerValue]){//时间小于一天

        distanceStr = [NSString stringWithFormat:@"今天 %@",timeStr];

    }

    else if(distanceTime<24*60*60*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 <24*60*60*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个

红包金额最低5元

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

抵扣说明:

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

余额充值