使用SwiftyJSON来反序列化NSDate

使用SwiftyJSON将JSON日期反序列化为NSDate实例的最佳方式是什么?

难道只是使用stringValueNSDateFormatter或有与SwiftyJSON内置日期API的方法?


这听起来像NSDate支持不是内置到SwiftyJSON中,但是您可以使用自己的便捷访问器来扩展JSON类。

下面的代码是从这个GitHub问题改编的。

extension JSON {
    public var date: NSDate? {
        get {
            if let str = self.string {
                return JSON.jsonDateFormatter.dateFromString(str)
            }
            return nil
        }
    }

    private static let jsonDateFormatter: NSDateFormatter = {
        let fmt = NSDateFormatter()
        fmt.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
        fmt.timeZone = NSTimeZone(forSecondsFromGMT: 0)
        return fmt
    }()
}

例:

let j = JSON(data: "{"abc":"2016-04-23T02:02:16.797Z"}".dataUsingEncoding(NSUTF8StringEncoding)!)

print(j["abc"].date)  // prints Optional(2016-04-23 02:02:16 +0000)

您可能需要为日期格式化程序调整自己的数据; 看到这个问题更多的例子。 另请参阅有关JSON日期格式的问题。


Swift 3版本

extension JSON {
    public var date: Date? {
        get {
            if let str = self.string {
                return JSON.jsonDateFormatter.date(from: str)
            }
            return nil
        }
    }

    private static let jsonDateFormatter: DateFormatter = {
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
        dateFormatter.timeZone = TimeZone.autoupdatingCurrent
        return dateFormatter
    }()
}
链接地址: http://www.djcxy.com/p/46671.html

上一篇: Use SwiftyJSON to deserialize NSDate

下一篇: DateTime serialization and deserialization