美文网首页
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