所以,我的操场上有一些代码:
extension String {
func stringToDate(withFormat format:String) -> Date? {
let df = DateFormatter()
df.dateFormat = format
return df.date(from: self) ?? nil
}
}
struct Some {
let date:String
}
let some = Some(date: "Fri, 06 Jan 2017 04:36:17 +0000")
print(some.date.stringToDate(withFormat: "E, dd MMM yyyy HH:mm:ss Z") ?? "ooops")
它的工作很好。我收到了我预期的日期 - 2017-01-06 04:36:17 +0000 但在我的应用程序中,相同的代码和相同的日期字符串无法正常工作
答案 0 :(得分:2)
您可能在游乐场和应用程序中有不同的默认语言环境。
您可以使用print(df.locale)
进行检查。
E.g。如果您将区域设置设置为ru_RU
:
df.locale = Locale(identifier: "ru_RU")
然后你的日期将不会被解析。
要像@MartinR建议的那样将稳定的解析结果集语言环境设置为en_US_POSIX
。