如何从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