计算传入时间距今多少天/时/分/秒

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/baidu_33298752/article/details/50525081

/*

 @brief 计算传入时间距今多少天/时/分/秒

 @param timeSp 传入时间戳(有时差),可以是NSNumber、NSString类型

 @return 多少天/小时/分钟/秒前

 */


+ (NSString *)getTimeStringWithTimeSp:(id)timeSp

{

    //实例化一个NSDateFormatter对象

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

    //设定时间格式,这里可以设置成自己需要的格式

    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

    

    NSDate *pubDate = nil;

    // NSNumber

    if ([timeSp isKindOfClass:[NSNumber class]]) {

        NSNumber *timesp = (NSNumber *)timeSp;

        NSString *str = [timesp stringValue]; //时间戳

        NSTimeInterval timer = [str doubleValue]-28800;//因为时差问题要减8小时 == 28800;

        pubDate = [NSDate dateWithTimeIntervalSince1970:timer];

    }

    // NSString

    else {

        NSString *timesp = (NSString *)timeSp;

        pubDate = [dateFormatter dateFromString:timesp];

    }

    

    // 获取当前时间

    NSDate *curDate = [NSDate date];

    

    // 得到时间秒差

    NSTimeInterval time = [curDate timeIntervalSinceDate:pubDate];

    NSMutableString *timeString = [NSMutableString string];

    

    if (time >= 86400) {

        int day = time/86400;

        [timeString appendFormat:@"%d天前",day];

    }

    else if (time >= 3600) {

        int hour = time/3600;

        [timeString appendFormat:@"%d小时前",hour];

    }

    else if (time >= 60) {

        int minute = time/60;

        [timeString appendFormat:@"%d分钟前",minute];

    }

    else {

        int second = time;

        [timeString appendFormat:@"%d秒前",second];

    }

    

    return timeString;

}

没有更多推荐了,返回首页