天天看点

列表时间和当前时间相比显示不同的状态,刚刚、几分钟前、几小时前、几天前、正常日期

第一次写博客,把自己做的一些笔记分享给大家,有简单的有复杂的,不喜请喷。

相信大家经常遇到列表时间上显示刚刚、几分钟前、几小时前、几天前、正常日期这样的展示方式。一般这种数据如果不是实时刷新都会由后台算好给返回,但是大多数这样显示的都是前台实时刷新哒,所以我们就写一个小小的算法咯,上代码步入正题。相信一切尽在不言中各为看官均能理解。

.h文件定义一个类方法

@interface CBGetTimeState : NSObject

+(NSString*)needChangeStringToTime:(NSString*)timeStr;

@end

.m文件实现代码

#import "CBGetTimeState.h"

@implementation CBGetTimeState

+(NSString*)needChangeStringToTime:(NSString*)timeStr

{

    if (timeStr!=nil) {

        NSDateFormatter *formatter = [[NSDateFormatter alloc] init];

        [formatter setDateFormat:@"YYYY-MM-dd  HH:mm:ss"];

//        NSTimeZone* timeZone = [NSTimeZone timeZoneWithName:@"Asia/Beijing"];

//        [formatter setTimeZone:timeZone];

        NSDate *dateModel = [formatter dateFromString:timeStr];

        NSDate *dateNow = [formatter dateFromString:[self getNowTime]];

        NSString *timeModel = [NSString stringWithFormat:@"%ld", (long)[dateModel timeIntervalSince1970]];

        NSString *timeNow = [NSString stringWithFormat:@"%ld", (long)[dateNow timeIntervalSince1970]];

        NSInteger time = ([timeNow integerValue] - [timeModel integerValue]);

        NSString*resultStr=[[NSString alloc] init];

        if (time<3*60) {

            resultStr=@"刚刚";

        }

        else if (time>=3*60&&time<60*60)

        {

            resultStr=[NSString stringWithFormat:@"%ld分钟前",time/60];

        }

        else if (time>=60*60&&time<60*60*24)

        {

            resultStr=[NSString stringWithFormat:@"%ld小时前",time/(60*60)];

        }

        else if (time>=60*60*24&&time<60*60*24*3)

        {

            resultStr=[NSString stringWithFormat:@"%ld天前",time/(60*60*24)];

        }

        else

        {

            resultStr=[self timeState:timeStr];

        }

        return resultStr;

    }

    return nil;

}

+ (NSString *)getNowTime {

    NSDate *senddate=[NSDate date];

    NSDateFormatter  *dateformatter=[[NSDateFormatter alloc] init];

    [dateformatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];

    NSString *locationString=[dateformatter stringFromDate:senddate];

    return locationString;

}

//2015-11-03T09:52:59Z

+(NSString*)timeState:(NSString*)time

{

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];

    [formatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];

    NSDate *mydate=[formatter dateFromString:time];

    [formatter setDateFormat:@"YYYY"];

    NSInteger currentYear=[[formatter stringFromDate:mydate] integerValue];

    [formatter setDateFormat:@"MM"];

    NSInteger currentMonth=[[formatter stringFromDate:mydate]integerValue];

    [formatter setDateFormat:@"dd"];

    NSInteger currentDay=[[formatter stringFromDate:mydate] integerValue];

    return [NSString stringWithFormat:@"%ld-%02ld-%02ld",(long)currentYear,(long)currentMonth,(long)currentDay];

}

@end

以上代码只需复制粘贴到您的项目中就可以使用啦。直接调用类方法传参,赋值。

继续阅读