DateFormatter不返回“HH:mm:ss”的日期

时间:2016-11-19 11:32:13

标签: ios swift date swift3

以下是代码摘录:

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"的字符串。我把“让日期”看看它返回的是什么,它是零。我在这里查找了格式代码:http://waracle.net/iphone-nsdateformatter-date-formatting-table/

代码应该实际工作。我做错了什么?

编辑:添加了整个功能

EDIT2 :我刚刚注意到它在iPhone 7 iOS 10.1模拟器上运行正常但在我的iPod 10.1.1(2016)上返回nil。这太奇怪了。

1 个答案:

答案 0 :(得分:27)

来自Technical Q&A QA1480 – NSDateFormatter and Internet Dates(强调补充):

  

另一方面,如果您正在使用固定格式的日期,则应首先将日期格式化程序的区域设置设置为适合您的固定格式。在大多数情况下,选择的最佳语言环境是&#34; en_US_POSIX&#34;,这是一个专门设计用于产生美国英语结果的语言环境,无论用户和系统偏好如何。

这将阻止根据日期解释日期 用户的区域设置:

handleResponse

另见What is the best way to deal with the NSDateFormatter locale "feechur"?