时间格式

/**

 1.今年

 1> 今天

 * 1分内: 刚刚

 * 1分~59分内:xx分钟前

 * 大于60分钟:xx小时前

 2> 昨天

 * 昨天 xx:xx

 3> 其他

 * xx-xx xx:xx

 2.非今年

 1> xxxx-xx-xx xx:xx

 */

-(NSString *)createtime{

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

    format.dateFormat = @"yyyy-MM-dd HH:mm:ss";

    

    NSDate *CreateDate = [format dateFromString:_createtime];

    

    // 现在时间

    NSDate *now = [NSDate date];

    

    NSCalendar *calendar = [NSCalendar currentCalendar];

    NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;

    // 计算两个日期之间的差值

    NSDateComponents *cmps = [calendar components:unit fromDate:CreateDate toDate:now options:0];

    

    if ([self isThisYear:CreateDate]) {  // 今年

        if ([self isYesterday:CreateDate]) {  // 昨天

            format.dateFormat = @"昨天 HH:mm";

            return [format stringFromDate:CreateDate];

        }else if([self isToday:CreateDate]){  // 今天

            if (cmps.hour >= 1) {  // xx小时前

                return [NSString stringWithFormat:@"%d小时前",(int)cmps.hour];

            }else if(cmps.minute >= 1){  // 信息分钟前

                return [NSString stringWithFormat:@"%d分钟前",(int)cmps.minute];

            }else{// 刚刚

                return @"刚刚";

            }

        }else{// 今年的其他日子

            format.dateFormat = @"MM-dd HH:mm";

            return [format stringFromDate:CreateDate];

        }

    }else{// 非今年

        format.dateFormat = @"yyyy-MM-dd HH:mm";

        return [format stringFromDate:CreateDate];

    }

    

    return _createtime;

}

- (BOOL)isThisYear:(NSDate *)date{

    

    NSCalendar *calendar = [NSCalendar currentCalendar];

    

    NSDateComponents *createDate = [calendar components:NSCalendarUnitYear fromDate:date];

    NSDateComponents *currentDate = [calendar components:NSCalendarUnitYear fromDate:[NSDate date]];

    

    return createDate.year == currentDate.year;

}

- (BOOL)isYesterday:(NSDate *)date{

    

    NSDate *now = [NSDate date];

    

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

    format.dateFormat = @"yyyy-MM-dd";

    

    //将时间转换为字符串(去掉时分秒)

    NSString *createStr = [format stringFromDate:date];

    NSString *currentStr = [format stringFromDate:now];

    

    // 将时间字符串转化为NSDate

    date = [format dateFromString:createStr];

    now = [format dateFromString:currentStr];

    

    NSCalendar *calendar = [NSCalendar currentCalendar];

    NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay;

    // 计算两个日期之间的差值

    NSDateComponents *cmps = [calendar components:unit fromDate:date toDate:now options:0];

    

    return cmps.year == 0 && cmps.month == 0 && cmps.day == 1;

}

- (BOOL)isToday:(NSDate *)date{

    

    NSDate *now = [NSDate date];

    

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

    format.dateFormat = @"yyyy-MM-dd";

    

    //将时间转换为字符串(去掉时分秒)

    NSString *createStr = [format stringFromDate:date];

    NSString *currentStr = [format stringFromDate:now];

    

    return [createStr isEqualToString:currentStr];

}