iOS 根据Date获取x分钟前/x小时前/昨天/x天前/x个月前/x年前

返回x分钟前/x小时前/昨天/x天前/x个月前/x年前

– (NSString *)timeInfo {return [NSDate timeInfoWithDate:self];}+ (NSString *)timeInfoWithDate:(NSDate *)date {return [self timeInfoWithDateString:[self stringWithDate:date format:[self ymdHmsFormat]]];}+ (NSString *)timeInfoWithDateString:(NSString *)dateString {NSDate *date = [self dateWithString:dateString format:[self ymdHmsFormat]];NSDate *curDate = [NSDate date];NSTimeInterval time = -[date timeIntervalSinceDate:curDate];int month = (int)([curDate month] – [date month]);int year = (int)([curDate year] – [date year]);int day = (int)([curDate day] – [date day]);NSTimeInterval retTime = 1.0;if (time < 3600) { // 小于一小时retTime = time / 60;retTime = retTime <= 0.0 ? 1.0 : retTime;return [NSString stringWithFormat:@"%.0f分钟前", retTime];} else if (time < 3600 * 24) { // 小于一天,也就是今天retTime = time / 3600;retTime = retTime <= 0.0 ? 1.0 : retTime;return [NSString stringWithFormat:@"%.0f小时前", retTime];} else if (time < 3600 * 24 * 2) {return @"昨天";}// 第一个条件是同年,,且相隔时间在一个月内// 第二个条件是隔年,对于隔年,只能是去年12月与今年1月这种情况else if ((abs(year) == 0 && abs(month) <= 1)|| (abs(year) == 1 && [curDate month] == 1 && [date month] == 12)) {int retDay = 0;if (year == 0) { // 同年if (month == 0) { // 同月retDay = day;}}if (retDay <= 0) {// 获取发布日期中,该月有多少天int totalDays = (int)[self daysInMonth:date month:[date month]];// 当前天数 + (发布日期月中的总天数-发布日期月中发布日,即等于距离今天的天数)retDay = (int)[curDate day] + (totalDays – (int)[date day]);}return [NSString stringWithFormat:@"%d天前", (abs)(retDay)];} else {if (abs(year) <= 1) {if (year == 0) { // 同年return [NSString stringWithFormat:@"%d个月前", abs(month)];}// 隔年int month = (int)[curDate month];int preMonth = (int)[date month];if (month == 12 && preMonth == 12) {// 隔年,但同月,就作为满一年来计算return @"1年前";}return [NSString stringWithFormat:@"%d个月前", (abs)(12 – preMonth + month)];}return [NSString stringWithFormat:@"%d年前", abs(year)];}return @"1小时前";}

版权声明:本文为博主原创文章,未经博主允许不得转载。

家!甜蜜的家!天下最美好的莫过於家

iOS 根据Date获取x分钟前/x小时前/昨天/x天前/x个月前/x年前

相关文章:

你感兴趣的文章:

标签云: