Swift使用哪种默认日期格式来进行JSON编码?

6
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}")

我在文档中找不到这个代表什么意思。

1
请阅读 The Codable Cheat Sheet - vadian
@vadian 这份速查表没有提到日期编码。只有解码。 - Darko
1个回答

8

iOS日期通常被编码或处理为相对于ReferenceDate的秒数。

例如,可以使用以下代码创建一个日期值:

Date(timeIntervalSinceReferenceDate:)

其文档说明如下:

概要

通过给定的秒数创建一个相对于2001年1月1日UTC 00:00:00的日期值。

可以将您的数字通过此函数,然后您将得到相应的日期:

Date(timeIntervalSinceReferenceDate: 589331953.61679399)

输出结果: "2019-09-04 23:19:13 +0000\n"


至于明确的编码文档,这非常简洁。

文档中,提到了默认的编码策略:

默认策略是JSONEncoder.DateEncodingStrategy.deferredToDate策略。

但是,除了手动测试之外,似乎没有任何明确的解释。目前的参考文献在这里。即使深入接口文件,也似乎没有更多信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接