Ios Swift 3中的日期格式化程序
所以,我在操场上有一些代码:Ios Swift 3中的日期格式化程序,ios,swift,date,nsdateformatter,Ios,Swift,Date,Nsdateformatter,所以,我在操场上有一些代码: 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
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
但在我的应用程序中,相同的代码和带有日期的相同字符串不能正常工作
游乐场:
应用程序:您可能在游乐场和应用程序中有不同的默认区域设置 您可以使用
print(df.locale)
进行检查
例如,如果您将区域设置设置为ru\u ru
:
df.locale = Locale(identifier: "ru_RU")
那么您的日期将不会被解析
要使稳定的解析结果集locale设置为@MartinR建议的
en_US\u POSIX
。“E”是一个符号,您在代码中提供了3(“Fri”),您确定没有另一个同名扩展名被调用吗?从您的扩展中打印一些内容以确保它被调用可能的重复–将格式化程序区域设置设置为“en_US_POSIX”。您能告诉我们如何调用test()?我很好奇为什么你的日志上写着0。这可能是您初始化某个结构的方式。