From a3a1d10abc93ddf45e3030b594525144cd88eb2e Mon Sep 17 00:00:00 2001 From: Cemal Eker Date: Mon, 21 Apr 2014 12:16:15 +0300 Subject: [PATCH] Updated NSDate+Datetools category to reuse formatter instances. --- DateTools/NSDate+DateTools.m | 46 +++++++++++++++--------------------- 1 file changed, 19 insertions(+), 27 deletions(-) diff --git a/DateTools/NSDate+DateTools.m b/DateTools/NSDate+DateTools.m index faf8eb9d..c89aef65 100644 --- a/DateTools/NSDate+DateTools.m +++ b/DateTools/NSDate+DateTools.m @@ -1406,10 +1406,7 @@ -(BOOL)isLaterThanOrEqualTo:(NSDate *)date{ * @return NSString representing the formatted date string */ -(NSString *)formattedDateWithStyle:(NSDateFormatterStyle)style{ - NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; - [formatter setDateStyle:style]; - [formatter setLocale:[NSLocale currentLocale]]; - return [formatter stringFromDate:self]; + return [self formattedDateWithStyle:style timeZone:[NSTimeZone systemTimeZone] locale:[NSLocale currentLocale]]; } /** @@ -1421,10 +1418,7 @@ -(NSString *)formattedDateWithStyle:(NSDateFormatterStyle)style{ * @return NSString representing the formatted date string */ -(NSString *)formattedDateWithStyle:(NSDateFormatterStyle)style timeZone:(NSTimeZone *)timeZone{ - NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; - [formatter setDateStyle:style]; - [formatter setTimeZone:timeZone]; - return [formatter stringFromDate:self]; + return [self formattedDateWithStyle:style timeZone:timeZone locale:[NSLocale autoupdatingCurrentLocale]]; } /** @@ -1436,10 +1430,7 @@ -(NSString *)formattedDateWithStyle:(NSDateFormatterStyle)style timeZone:(NSTime * @return NSString representing the formatted date string */ -(NSString *)formattedDateWithStyle:(NSDateFormatterStyle)style locale:(NSLocale *)locale{ - NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; - [formatter setDateStyle:style]; - [formatter setLocale:locale]; - return [formatter stringFromDate:self]; + return [self formattedDateWithStyle:style timeZone:[NSTimeZone systemTimeZone] locale:locale]; } /** @@ -1452,7 +1443,12 @@ -(NSString *)formattedDateWithStyle:(NSDateFormatterStyle)style locale:(NSLocale * @return NSString representing the formatted date string */ -(NSString *)formattedDateWithStyle:(NSDateFormatterStyle)style timeZone:(NSTimeZone *)timeZone locale:(NSLocale *)locale{ - NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; + static NSDateFormatter *formatter = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + formatter = [[NSDateFormatter alloc] init]; + }); + [formatter setDateStyle:style]; [formatter setTimeZone:timeZone]; [formatter setLocale:locale]; @@ -1468,10 +1464,7 @@ -(NSString *)formattedDateWithStyle:(NSDateFormatterStyle)style timeZone:(NSTime * @return NSString representing the formatted date string */ -(NSString *)formattedDateWithFormat:(NSString *)format{ - NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; - [formatter setDateFormat:format]; - [formatter setLocale:[NSLocale currentLocale]]; - return [formatter stringFromDate:self]; + return [self formattedDateWithFormat:format timeZone:[NSTimeZone systemTimeZone] locale:[NSLocale autoupdatingCurrentLocale]]; } /** @@ -1483,10 +1476,7 @@ -(NSString *)formattedDateWithFormat:(NSString *)format{ * @return NSString representing the formatted date string */ -(NSString *)formattedDateWithFormat:(NSString *)format timeZone:(NSTimeZone *)timeZone{ - NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; - [formatter setDateFormat:format]; - [formatter setTimeZone:timeZone]; - return [formatter stringFromDate:self]; + return [self formattedDateWithFormat:format timeZone:timeZone locale:[NSLocale autoupdatingCurrentLocale]]; } /** @@ -1498,10 +1488,7 @@ -(NSString *)formattedDateWithFormat:(NSString *)format timeZone:(NSTimeZone *)t * @return NSString representing the formatted date string */ -(NSString *)formattedDateWithFormat:(NSString *)format locale:(NSLocale *)locale{ - NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; - [formatter setDateFormat:format]; - [formatter setLocale:locale]; - return [formatter stringFromDate:self]; + return [self formattedDateWithFormat:format timeZone:[NSTimeZone systemTimeZone] locale:locale]; } /** @@ -1514,9 +1501,14 @@ -(NSString *)formattedDateWithFormat:(NSString *)format locale:(NSLocale *)local * @return NSString representing the formatted date string */ -(NSString *)formattedDateWithFormat:(NSString *)format timeZone:(NSTimeZone *)timeZone locale:(NSLocale *)locale{ - NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; + static NSDateFormatter *formatter = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + formatter = [[NSDateFormatter alloc] init]; + }); + [formatter setDateFormat:format]; - [formatter setTimeZone:timeZone]; + [formatter setTimeZone:timeZone]; [formatter setLocale:locale]; return [formatter stringFromDate:self]; }