/**
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];
}