Mysql 在swift 3中从字符串设置日期

Mysql 在swift 3中从字符串设置日期,mysql,date,swift3,xcode8,Mysql,Date,Swift3,Xcode8,我需要为变量类型Date()分配一个值'datetime'mysql dbase。 记录将作为字符串从httprequest导入。 然后我想从字符串格式设置日期()。 所以我有这个函数: func parseDate(dateStr:String, format:String="yyyy-MM-dd HH:mm") -> Date { let myLocale = Locale(identifier: "it_IT") let dateFormat = DateFormatter

我需要为变量类型Date()分配一个值'datetime'mysql dbase。 记录将作为字符串从httprequest导入。 然后我想从字符串格式设置日期()。 所以我有这个函数:

func parseDate(dateStr:String, format:String="yyyy-MM-dd HH:mm") -> Date {

  let myLocale = Locale(identifier: "it_IT")
  let dateFormat = DateFormatter()
  dateFormat.timeZone = TimeZone(abbreviation: "CEST")
  dateFormat.locale = myLocale
  dateFormat.dateStyle = .medium
  dateFormat.timeStyle = .medium
  dateFormat.dateFormat = format

  return dateFmt.date(from: dateStr)
}
我有以下错误:“无法将返回行上的“日期”类型的返回表达式转换为“日期”类型的返回表达式。”


如何解决此问题。

在swift中,可选类型和非可选副本不能视为同一类型,即日期和日期是不同的类型

date(from:String)
函数返回可选的
date
-
date?
,函数返回非可选的
date


若要修复函数,请通过将
..->Date{
更改为
..->Date?
返回可选值,或通过对返回语句进行可选扩展返回非可选值:
返回日期fmt.Date(from:dateStr)??Date(timeIntervalSince1970:0)

在swift中,可选类型和非可选副本不能被视为同一类型,即
日期
日期?
是不同的类型

date(from:String)
函数返回可选的
date
-
date?
,函数返回非可选的
date


若要修复函数,请通过将
..->Date{
更改为
..->Date?
返回可选值,或通过对返回语句进行可选扩展返回非可选值:
返回日期fmt.Date(from:dateStr)??Date(timeIntervalSince1970:0)

使函数返回
日期?
,以防它无法分析字符串。如何将此函数作为可选返回值?不要手动设置语言环境或时区。如果日期字符串中没有时区,只需使用语言环境和时区的日期格式化程序默认值(默认值为本地时间)方法声明中的日期不是
->Date
,而是
->Date?
。使函数返回
Date?
,以防它无法解析字符串。如何将此函数作为可选返回值?不要手动设置区域设置或timeZome。如果日期字符串中没有时区,请使用日期格式化程序默认值语言环境和时区(默认值为本地时间)而不是方法声明中的
->Date
,它是
->Date?
。我绝对建议使用可选模式。Swift中的可选模式的整体思想是具有可预测、可靠的哨兵值。使用类似
Date(timeIntervalSince1970:0)的内容
与此设计概念相反。我实际上同意@Rob我添加的扩展只是为了完整性。我更改了
func parseDate(dateStr:String,format:String=“yyyy-MM-dd HH:MM”)->Date?{..
和return语句
return dateFmt.Date(from:dateStr)
。现在我出现了这个错误
无法将类型为“Date?”的返回表达式转换为类型为“Date?”
我绝对建议使用可选模式。Swift中optionals的整个思想是要有一个可预测的、可靠的哨兵值。使用类似
日期(TimeIntervalence1970:0)的东西
与此设计概念相反。我实际上同意@Rob我添加的扩展只是为了完整性。我更改了
func parseDate(dateStr:String,format:String=“yyyy-MM-dd HH:MM”)->Date?{..
和return语句
return dateFmt.Date(from:dateStr)
。现在我遇到了这个错误
无法将“Date”类型的返回表达式转换为“Date”类型的返回表达式。