美文网首页
NSDateFormatter使用时的性能优化

NSDateFormatter使用时的性能优化

作者: th先生 | 来源:发表于2017-12-08 15:00 被阅读0次

    代码大量使用了NSDateFormatter,NSDateFormatter的创建比较消耗性能,如果需要多处使用,最好通过单例的方式来创建,防止多次创建消耗性能

    #import "KDateFormatter.h"
    
    static KDateFormatter *_instanceType = nil;
    
    @implementation KDateFormatter
    
    + (instancetype)sharedDateFormatter{
        
       static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{
            _instanceType = [[KDateFormatter alloc]init];
        });
        return _instanceType;
    }
    
    @end
    

    另外,利用strptime函数来进行转换的方法也可降低消耗。

    - (NSDate *)dateFromISO8601StringDateFormatter:(NSString *)string{
        if (!string) {
            return nil;
        }
    
        struct tm tm;
        time_t t;
    
        strptime([string cStringUsingEncoding:NSUTF8StringEncoding], "%Y-%m-%d %H:%M:%S", &tm);
        tm.tm_isdst = -1;
        t = mktime(&tm);
    
        return [NSDate dateWithTimeIntervalSince1970:t + [[NSTimeZone localTimeZone] secondsFromGMT]];
    }
    
    - (NSString *)ISO8601String:(NSDate*)date {
        struct tm *timeinfo;
        char buffer[80];
    //这里计算秒的时候,实际时间跟北京时间相差8小时,所以要加8*60*60秒
        time_t rawtime = [date timeIntervalSince1970] - [[NSTimeZone localTimeZone] secondsFromGMT] + 8*60*60;
        timeinfo = localtime(&rawtime);
    
        strftime(buffer, 80, "%Y-%m-%d %H:%M:%S", timeinfo);
    
        return [NSString stringWithCString:buffer encoding:NSUTF8StringEncoding];
    }
    

    相关文章

      网友评论

          本文标题:NSDateFormatter使用时的性能优化

          本文链接:https://www.haomeiwen.com/subject/jjseixtx.html