有时候在项目对时间的显示可能需要比较友好一点,IOS本身的NSDate用着不是太爽,处理Date时那是真的头大,下面是混合C的一套写法:

-(NSString *)friendlyTime:(NSString *)datetime
{
time_t current_time = time(NULL);

static NSDateFormatter *dateFormatter =nil;
if (dateFormatter == nil) {
dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
dateFormatter.timeZone = [NSTimeZonetimeZoneForSecondsFromGMT:0];
}

NSDate *date = [dateFormatter dateFromString:datetime];

time_t this_time = [datetimeIntervalSince1970];

time_t delta = current_time - this_time;

if (delta <= 0) {
return @"刚刚";
}
else if (delta <60)
return [NSStringstringWithFormat:@"%ld秒前", delta];
else if (delta <3600)
return [NSStringstringWithFormat:@"%ld分钟前", delta /60];
else {
struct tm tm_now, tm_in;
localtime_r(&current_time, &tm_now);
localtime_r(&this_time, &tm_in);
NSString *format = nil;

if (tm_now.tm_year == tm_in.tm_year) {
if (tm_now.tm_yday == tm_in.tm_yday)
format = @"今天 %-H:%M";
else
format = @"%-m月%-d日 %-H:%M";
}
else
format = @"%Y年%-m月%-d日 %-H:%M";

char buf[256] = {0};
strftime(buf, sizeof(buf), [format UTF8String], &tm_in);
return [NSStringstringWithUTF8String:buf];
}
}