From 914e6524ecfbb7eb975fcdffcf291edc55c905e2 Mon Sep 17 00:00:00 2001 From: Ivan Zinovyev Date: Mon, 19 Dec 2016 22:12:22 +0300 Subject: [PATCH] Replace DateFormatter with Date extension, add dateFormat property for TextField --- ...eFormatter.swift => Date+Extensions.swift} | 39 +++---------------- .../Source/UIAnimatedTextField.swift | 7 +++- 2 files changed, 10 insertions(+), 36 deletions(-) rename UIAnimatedTextField/Source/{TIDateFormatter.swift => Date+Extensions.swift} (50%) diff --git a/UIAnimatedTextField/Source/TIDateFormatter.swift b/UIAnimatedTextField/Source/Date+Extensions.swift similarity index 50% rename from UIAnimatedTextField/Source/TIDateFormatter.swift rename to UIAnimatedTextField/Source/Date+Extensions.swift index daf42cc..299dbb3 100644 --- a/UIAnimatedTextField/Source/TIDateFormatter.swift +++ b/UIAnimatedTextField/Source/Date+Extensions.swift @@ -22,41 +22,12 @@ // THE SOFTWARE. // -import Foundation - -class TIDateFormatter { +extension Date { - fileprivate static let dateLongFormat = "dd/MM/YYYY" - fileprivate static let dateShortFormat = "dd/MM/YY" - fileprivate static let monthDayFormat = "MMMM d" - - fileprivate let longDateFormatter = DateFormatter() - fileprivate let shortDateFormatter = DateFormatter() - fileprivate let monthDayDateFormatter = DateFormatter() - - private static let shared = TIDateFormatter() - - // MARK: Init - - private init() { - longDateFormatter.dateFormat = TIDateFormatter.dateLongFormat - shortDateFormatter.dateFormat = TIDateFormatter.dateShortFormat - monthDayDateFormatter.dateFormat = TIDateFormatter.monthDayFormat - } - - // MARK: Public functions - - static func longDate(from date: Date) -> String { - return shared.longDateFormatter.string(from: date) - } - - static func shortDate(from date: Date) -> String { - return shared.shortDateFormatter.string(from: date) - } - - /// - Returns: example: "December 2" - static func monthDay(from date: Date) -> String { - return shared.monthDayDateFormatter.string(from: date) + func toString(withFormat format: String) -> String { + let dateFormatter = DateFormatter() + dateFormatter.dateFormat = format + return dateFormatter.string(from: self) } } diff --git a/UIAnimatedTextField/Source/UIAnimatedTextField.swift b/UIAnimatedTextField/Source/UIAnimatedTextField.swift index 853b6ae..b3c7838 100644 --- a/UIAnimatedTextField/Source/UIAnimatedTextField.swift +++ b/UIAnimatedTextField/Source/UIAnimatedTextField.swift @@ -59,6 +59,8 @@ public class UIAnimatedTextField: UIView { // MARK: - Constants struct Constants { static let done = "Done" + static let space = " " + static let defaultDateFormat = "dd/MM/YYYY" } // MARK: - Delegate @@ -170,6 +172,7 @@ public class UIAnimatedTextField: UIView { } public var selectedDate: Date? + public var dateFormat: String = Constants.defaultDateFormat @IBInspectable public var placeholderTopColor: UIColor = UIColor.gray @IBInspectable public var placeholderBottomColor: UIColor = UIColor.gray @@ -407,7 +410,7 @@ public class UIAnimatedTextField: UIView { @objc private func datePickerValueChanged(_ datePicker: UIDatePicker) { selectedDate = datePicker.date - text = TIDateFormatter.longDate(from: datePicker.date) + text = datePicker.date.toString(withFormat: dateFormat) } private func getDateInputAccessoryView() -> UIView { @@ -461,7 +464,7 @@ extension UIAnimatedTextField: UITextFieldDelegate { if case .date = type { if let datePicker = textField.inputView as? UIDatePicker { - textField.text = TIDateFormatter.longDate(from: datePicker.date) + textField.text = datePicker.date.toString(withFormat: dateFormat) } }