// Copyright © 2015 Abhishek Banthia import Cocoa class DateFormatterManager: NSObject { private static var dateFormatter = DateFormatter() private static var calendarDateFormatter = DateFormatter() private static var simpleFormatter = DateFormatter() private static var specializedFormatter = DateFormatter() private static var localizedForamtter = DateFormatter() private static var localizedSimpleFormatter = DateFormatter() private static var gregorianCalendar = Calendar(identifier: Calendar.Identifier.gregorian) private static var USLocale = Locale(identifier: "en_US") class func dateFormatter(with style: DateFormatter.Style, for timezoneIdentifier: String) -> DateFormatter { dateFormatter.dateStyle = style dateFormatter.timeStyle = style dateFormatter.locale = USLocale dateFormatter.timeZone = TimeZone(identifier: timezoneIdentifier) return dateFormatter } class func dateFormatterWithFormat(with style: DateFormatter.Style, format: String, timezoneIdentifier: String, locale: Locale = Locale(identifier: "en_US")) -> DateFormatter { if (specializedFormatter.dateStyle != style) { specializedFormatter.dateStyle = style } if (specializedFormatter.timeStyle != style) { specializedFormatter.timeStyle = style } if (specializedFormatter.dateFormat != format) { specializedFormatter.dateFormat = format } if (specializedFormatter.timeZone.identifier != timezoneIdentifier) { specializedFormatter.timeZone = TimeZone(identifier: timezoneIdentifier) } if (specializedFormatter.locale.identifier != locale.identifier) { specializedFormatter.locale = locale } return specializedFormatter } class func localizedFormatter(with format: String, for timezoneIdentifier: String, locale _: Locale = Locale.autoupdatingCurrent) -> DateFormatter { dateFormatter.dateStyle = .none dateFormatter.timeStyle = .none dateFormatter.locale = Locale.autoupdatingCurrent dateFormatter.dateFormat = format dateFormatter.timeZone = TimeZone(identifier: timezoneIdentifier) return dateFormatter } class func localizedSimpleFormatter(_ format: String) -> DateFormatter { localizedSimpleFormatter.dateStyle = .none localizedSimpleFormatter.timeStyle = .none localizedSimpleFormatter.dateFormat = format localizedSimpleFormatter.locale = Locale.autoupdatingCurrent return localizedSimpleFormatter } }