使用SwiftyJSON反序列化NSDate

使用SwiftyJSON反序列化NSDate,json,swift,nsdate,swifty-json,Json,Swift,Nsdate,Swifty Json,使用SwiftyJSON将数据反序列化为NSDate实例的最佳方法是什么 是将stringValue与NSDateFormatter一起使用,还是有一个内置的日期API方法与SwiftyJSON一起使用?听起来好像NSDate支持没有内置到SwiftyJSON中,但您可以使用自己的方便访问器扩展JSON类 以下代码改编自 例如: let j = JSON(data: "{\"abc\":\"2016-04-23T02:02:16.797Z\"}".dataUsingEncoding(NSUTF8

使用SwiftyJSON将数据反序列化为
NSDate
实例的最佳方法是什么


是将
stringValue
NSDateFormatter
一起使用,还是有一个内置的日期API方法与SwiftyJSON一起使用?

听起来好像NSDate支持没有内置到SwiftyJSON中,但您可以使用自己的方便访问器扩展JSON类

以下代码改编自

例如:

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)

您可能需要为自己的数据调整日期格式化程序;有关更多示例,请参见。另请参见。

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
    }()
}

谢谢,这看起来很棒。是的,我必须调整我的日期格式。现在,示例日期为
2016-04-24T16:47:58.319+0000时,它不起作用。不确定为什么这与您在回答中提到的
NSDateFormatter
格式不一致。因为我使用的dateFormat不接受时区信息。看看我链接的其他问题;我认为答案包括一个例子。
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
    }()
}