这是代码摘录:
func mapping(map: Map) {
time <- (map["time"], TransformOf<Date, String>(fromJSON: {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "HH:mm:ss"
//dateFormatter.timeZone = TimeZone(abbreviation: "EEST")
if let argument = $0 {
let date = dateFormatter.date(from: argument)
return dateFormatter.date(from: argument)
}
return nil
}}
$0
是字符串"22:12:00"
。我输入“let date”来查看它返回的内容,结果为零。我在这里查找了格式代码:http://waracle.net/iphone-nsdateformatter-date-formatting-table/
代码应该可以实际工作。我究竟做错了什么?
EDIT: 添加了整个功能
EDIT2:我刚刚注意到它在 iPhone 7 iOS 10.1 模拟器上正常工作,但在我的 iPod 10.1.1 (2016) 上返回 nil。这太奇怪了。
From 技术问答 QA1480 – NSDateFormatter 和互联网日期(强调):
另一方面,如果您使用固定格式的日期,则应该首先将日期格式化程序的区域设置设置为适合您的固定格式的区域设置。在大多数情况下,选择的最佳区域设置是“en_US_POSIX”,该区域设置专门设计用于生成美国英语结果,无论用户和系统首选项如何。
这将防止日期被解释为
用户的区域设置:
let dateFormatter = DateFormatter()
// Set the locale first ...
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
// ... and then the date format:
dateFormatter.dateFormat = "HH:mm:ss"
// ...
也可以看看处理 NSDateFormatter 区域设置“feechur”的最佳方法是什么?.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)