把时间戳转换成类似微博发布时间、微信发布时间的刚刚、X分钟前、X小时前等等。

- (NSString *)smartTime
{
    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];

    NSTimeInterval time=[self doubleValue];
    NSDate *createDate=[NSDate dateWithTimeIntervalSince1970:time];
    
    
    NSDate *now = [NSDate date];// 当前时间
    NSCalendar *calendar = [NSCalendar currentCalendar];  // 日历对象(方便比较两个日期之间的差距)
    // NSCalendarUnit枚举代表想获得哪些差值
    NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
    NSDateComponents *cmps = [calendar components:unit fromDate:createDate toDate:now options:0];// 两日期差值
    
    if ([createDate isThisYear]) { // 今年
        if ([createDate isYesterday]) { // 昨天
            fmt.dateFormat = @"昨天 HH:mm";
            return [fmt stringFromDate:createDate];
        } else if ([createDate isToday]) { // 今天
            if (cmps.hour >= 1) {
                return [NSString stringWithFormat:@"%d小时前", (int)cmps.hour];
            } else if (cmps.minute >= 1) {
                return [NSString stringWithFormat:@"%d分钟前", (int)cmps.minute];
            } else {
                return @"刚刚";
            }
        } else { // 今年的其他日子
            fmt.dateFormat = @"MM-dd HH:mm";
            return [fmt stringFromDate:createDate];
        }
    } else { // 非今年
        fmt.dateFormat = @"yyyy-MM-dd HH:mm";
        return [fmt stringFromDate:createDate];
    }
}

你可能感兴趣的:(把时间戳转换成类似微博发布时间、微信发布时间的刚刚、X分钟前、X小时前等等。)