I'm trying to format a date : 2017-10-18T20:32:35.684-05:00
to return date and time. I've created some formatters along with functions that use those formatters:
var currentFormatter: DateFormatter {
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd-HH:mm:ss.SSS"
formatter.locale = Locale.current
return formatter
}
var dateFormatter: DateFormatter {
let formatter = DateFormatter()
formatter.dateFormat = "dd MMMM"
formatter.locale = Locale(identifier: "es_MX")
return formatter
}
var timeFormatter: DateFormatter {
let formatter = DateFormatter()
formatter.dateFormat = "HH:mm"
formatter.locale = Locale(identifier: "en_US_POSIX")
return formatter
}
func getTimeFromDate(dateString:String, stringFormatter:DateFormatter, currentFormatter: DateFormatter) -> String {
let currentDate = stringFormatter.date(from: dateString)
print(currentDate)//returns nil
if let formattedDate = currentDate {
return currentFormatter.string(from:formattedDate)
}else {
return ""
}
}
func getMexicanLocalizedStringFromDate(date: String) -> String?{
let currentDate = self.currentFormatter.date(from: date)
print(currentDate)//returns nil
if let formattedDate = currentDate {
return self.dateFormatter.string(from:formattedDate)
}else {
return nil
}
}
This is how the functions are used:
if let date = self.date {
print(date)//This returns proper date
let time = getTimeFromDate(dateString: date, stringFormatter: currentFormatter, currentFormatter: timeFormatter)
print(time)
if let monthDay = getMexicanLocalizedStringFromDate(date: date){
print(monthDay)
cell.dateLabel.text = "\(monthDay), \(time)h"
print( cell.dateLabel.text)
}}
I'm not sure whenever I use the formatter it returns nil. Any help is appreciated!