Преобразование строки в тип DATE в swift 3
У меня есть эта структура:
struct message {
var id: String = "0"
var text: String = ""
var date: Date!
var status: String = ""
}
Мне нужно загрузить эту структуру из dbase, чтобы она экспортировала в формате String также "date".
Поэтому я пишу этот код для преобразования типа String в Date:
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
dateFormatter.timeZone = NSTimeZone(abbreviation: "UTC") as TimeZone!
let dataDate = dateFormatter.date(from: elemMessage["date"] as! String)!
И я загружаю его в структуру:
message(id: elemMessage["id"] as! String, text: elemMessage["text"] as! String, date: dataDate as! Date, status: elemMessage["status"] as! String)
Но у меня есть это предупреждение: "Бросьте из" Дата "в несвязанный тип" Дата "всегда терпит неудачу"
Итак, если я запустил приложение, он потерпит неудачу.
Как я могу это исправить, структура 'date' var должна быть типа Date.
Спасибо.
Ответы
Ответ 1
Вы можете преобразовать String Date в Date/NSDate, как показано ниже: -
Swift 3.2 и Swift 4.0
Строка по дате
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd-mm-yyyy" //Your date format
dateFormatter.timeZone = TimeZone(abbreviation: "GMT+0:00") //Current time zone
let date = dateFormatter.date(from: "01-01-2017") //according to date format your date string
print(date ?? "") //Convert String to Date
Дата для строки
dateFormatter.dateFormat = "MMM d, yyyy" //Your New Date format as per requirement change it own
let newDate = dateFormatter.string(from: date!) //pass Date here
print(newDate) //New formatted Date string
Результат: -
2017-01-11 00:07:00 +0000
Jan 11, 2017
![Экран вывода.]()
Ответ 2
func GetDateFromString(DateStr: String)-> Date
{
let calendar = NSCalendar(identifier: NSCalendar.Identifier.gregorian)
let DateArray = DateStr.components(separatedBy: "/")
let components = NSDateComponents()
components.year = Int(DateArray[2])!
components.month = Int(DateArray[1])!
components.day = Int(DateArray[0])!
components.timeZone = TimeZone(abbreviation: "GMT+0:00")
let date = calendar?.date(from: components as DateComponents)
return date!
}
//Вход: "23/02/2017"
//Выход: 2017-02-23 18:30:00 +0000