如何从swift 3中的String获取日期?

我已将数据库中的时间戳保存为:

"NSDate()" // which save Date like this: 2017-03-10 22:53:30 +0000 

现在我需要从这个字符串中获取日期,我已经尝试了所有格式,但它仍然保持返回nil。

  let dateFormatter = DateFormatter() dateFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss ZZZ" dateFormatter.locale = Locale(identifier: "en_US") print(dateFormatter.date(from: "2017-03-10 22:53:30 +0000") ?? "No Value") // always return No Value 

在这里我尝试了很多格式,例如:yyyy-MM-dd hh:mm:ss + zzzz yyyy-MM-dd hh:mm:ss xx

已经看到很多答案,但没有答案正在制定这种格式的日期“2017-03-10 22:53:30 +0000”

军事时间(24个值小时)使用资本“H”。 试试这个格式化字符串:

 dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss ZZZ" 

hh是一个12小时的小时。 如果你有一个24小时的小时填充,你需要HH 。 有关NSDateFormatter格式的更多详细信息,请查看http://nsdateformatter.com 。

我在将String转换为Date时使用此代码。 ( 斯威夫特3

 extension String { func toDate( dateFormat format : String) -> Date { let dateFormatter = DateFormatter() dateFormatter.dateFormat = format if let date = dateFormatter.date(from: self) { return date } print("Invalid arguments ! Returning Current Date . ") return Date() } } 

并且只是打电话。 。

  print ( "2016-06-20T13:01:46.457+02:00".toDate(dateFormat: "yyyy-MM-dd'T'HH:mm:ss.SSSZ") ) //Capital HH for 24-Hour Time