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。这可能是您初始化某个结构的方式。