From 39e0d9339d4b9a6dfb187f0f8908717941c3c399 Mon Sep 17 00:00:00 2001 From: Brian Leighty Date: Mon, 24 Aug 2015 10:36:41 -0400 Subject: [PATCH] modified to not recreate NSDateFormatter each iteration --- NSDateISO8601.swift | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/NSDateISO8601.swift b/NSDateISO8601.swift index 4124e79..ff05bad 100644 --- a/NSDateISO8601.swift +++ b/NSDateISO8601.swift @@ -7,22 +7,33 @@ import Foundation -public extension NSDate { - public class func ISOStringFromDate(date: NSDate) -> String { +private struct ISONSDateFormatters { + + static let ISOStringFromDateFormatter: NSDateFormatter = { var dateFormatter = NSDateFormatter() dateFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX") dateFormatter.timeZone = NSTimeZone(abbreviation: "GMT") - dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS" - - return dateFormatter.stringFromDate(date).stringByAppendingString("Z") - } + dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss" + return dateFormatter + }() - public class func dateFromISOString(string: String) -> NSDate { + static let dateFromISOStringFormatter: NSDateFormatter = { var dateFormatter = NSDateFormatter() dateFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX") dateFormatter.timeZone = NSTimeZone.localTimeZone() - dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ" - - return dateFormatter.dateFromString(string) + dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ" + return dateFormatter + }() + +} + +extension NSDate { + + class func ISOStringFromDate(date: NSDate) -> String { + return ISONSDateFormatters.ISOStringFromDateFormatter.stringFromDate(date).stringByAppendingString("Z") + } + + class func dateFromISOString(string: String) -> NSDate? { + return ISONSDateFormatters.dateFromISOStringFormatter.dateFromString(string) } } \ No newline at end of file