IOS中人性化时间的实现

作者:暗夜星辰 发布于:2013-8-7 12:23 Wednesday 分类:IOS学习笔记

 

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

 

 

+(NSString *)friendlyTime:(NSString *)datetime
{
    time_t current_time = [[NSDate date] timeIntervalSince1970];//time(NULL);
    
    static NSDateFormatter *dateFormatter =nil;
    if (dateFormatter == nil) {
        dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
        dateFormatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];
        //注意时区     }
    
    NSDate *date = [dateFormatter dateFromString:datetime];
    
    
    time_t this_time = [date timeIntervalSince1970];
    time_t delta = current_time - this_time;
    
    //NSLog(@"%ld",delta);
    
    if (delta <= 0) {
        return @"刚刚";
    }
    else if (delta <60)
        return [NSString stringWithFormat:@"%ld秒前", delta];
    else if (delta <3600)
        return [NSString stringWithFormat:@"%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 [NSString stringWithUTF8String:buf];
    }
}

 

 

 

 

感谢原创作者:

http://blog.csdn.net/zhuangyou123/article/details/8642426

本人修复部分 api 变更

标签: IOS 时间格式化 人性化时间 友好化时间

发表评论:

©2012-2014 woodbunny.com 木头♥兔子的小屋 sitemap