IOS里人性化的时间显示

来源:互联网 发布:php 换行输出 编辑:程序博客网 时间:2024/06/12 13:49

有时候在项目对时间的显示可能需要比较友好一点,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(¤t_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];    }}



原创粉丝点击