在swift中将string转换为DATEtypes3

我有这样的结构:

struct message { var id: String = "0" var text: String = "" var date: Date! var status: String = "" } 

我必须从dbase加载这个结构,它以string格式导出也'date'。 所以我写这个代码来将String转换为Datetypes:

 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'转换为不相关的types'date'总是失败”

所以如果我运行的应用程序将失败。

我如何解决这个问题,结构中的'date'var必须是Datetypes。

谢谢。

您可以将stringdate转换为date/ NSDate像下面的代码: –

Swift 3.2Swift 4.0

string到date

  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 

date到string

  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 

输出屏幕。

 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! } 

//input:“2017/02/23”

//输出:2017-02-23 18:30:00 +0000