struct TestEnc: Codable {
var date = Date()
}
let encoder = JSONEncoder()
let tenc = TestEnc()
let jsonData = try encoder.encode(tenc)
let json = String(data: jsonData, encoding: String.Encoding.utf8)
print("json:(json)")
这将打印:
json:Optional("{"date":589331953.61679399}")
我在文档中找不到这应该代表什么。
iOS 日期通常被编码或处理为从ReferenceDate
开始的秒
例如Date(timeIntervalSinceReferenceDate:)
这方面的文档是:
总结
创建一个相对于 2001 年 1 月 1 日 00:00:00 UTC 初始化给定秒数的日期值。
可以通过这个运行你的号码,你会得到你的日期:
Date(timeIntervalSinceReferenceDate: 589331953.61679399)
输出:"2019-09-04 23:19:13 +0000">
就显式编码文档而言。这是相当简洁的。
文档中提到了默认编码策略,指出:
默认策略是JSONEncoder.DateEncodingStrategy.deferredToDate策略。
但是,似乎不清楚这实际上意味着什么(除了手动测试(,目前参考在这里。即使深入研究界面文件,似乎也没有更多的光。