Use SwiftyJSON to deserialize NSDate
What is the best way to deserialize a JSON date into an NSDate
instance using SwiftyJSON?
Is it to just use stringValue
with NSDateFormatter
or is there a built in date API method with SwiftyJSON?
It sounds like NSDate support isn't built in to SwiftyJSON, but you can extend the JSON class with your own convenience accessors.
The following code is adapted from this GitHub issue.
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
}()
}
Example:
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)
You might need to tweak the date formatter for your own data; see this question for more examples. Also see this question about date formatting in 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/46672.html
上一篇: Php:从服务器下载时保留相同的文件名