使用 SwiftyJSON 反序列化 NSDate
Use SwiftyJSON to deserialize NSDate
使用 SwiftyJSON 将 JSON date 反序列化为 NSDate
实例的最佳方法是什么?
是仅将 stringValue
与 NSDateFormatter
一起使用还是使用 SwiftyJSON 内置日期 API 方法?
听起来 NSDate 支持并未内置到 SwiftyJSON,但您可以使用自己的便捷访问器扩展 JSON class。
以下代码改编自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
}()
}
示例:
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)
您可能需要为自己的数据调整日期格式;参见 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
}()
}
使用 SwiftyJSON 将 JSON date 反序列化为 NSDate
实例的最佳方法是什么?
是仅将 stringValue
与 NSDateFormatter
一起使用还是使用 SwiftyJSON 内置日期 API 方法?
听起来 NSDate 支持并未内置到 SwiftyJSON,但您可以使用自己的便捷访问器扩展 JSON class。
以下代码改编自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
}()
}
示例:
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)
您可能需要为自己的数据调整日期格式;参见 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
}()
}