PreciseISO8601DateFormatter
是一个精确且特定的日期格式化器。Apple 内置的 DateFormatter 和 ISO8601DateFormatter 只能解析到毫秒级别。许多服务返回的日期具有纳秒精度,格式为 yyyy-MM-dd'T'HH:mm:ss.SSSSSS'Z'
。PreciseISO8601DateFormatter
能够解析这些字符串并将日期编码为该格式。
PreciseISO8601DateFormatter
旨在成为 DateFormatter
或 ISO8601DateFormatter
的直接替代品。它是 Formatter 的子类。与 Apple 内置的日期格式化器一样,PreciseISO8601DateFormatter
是线程安全的。
重要的是要注意,如果您为格式化器提供了一个具有纳秒精度的日期,将其编码为字符串,然后再将该字符串解码回日期,则原始日期和解码后的日期将有所不同。解码后的日期将丢失其纳秒精度(即,日期的纳秒分量将从 448814988 变为 448814000)。这意味着,如果您使用 PreciseISO8601DateFormatter
来解码服务器返回的日期时间字符串,则还应使用此格式化器在本地存储编码后的日期时间字符串。
let formatter = PreciseISO8601DateFormatter()
let date = formatter.date(from: "2021-02-03T12:48:00.000123Z")
let string = formatter.string(from: date) // "2021-02-03T12:48:00.000123Z"
要将 PreciseISO8601DateFormatter 与 Swift Package Manager 一起使用,请将依赖项添加到您的 Package.swift 文件中
let package = Package(
dependencies: [
.package(url: "https://github.com/shareup/precise-iso-8601-date-formatter.git", from: "1.0.2")
]
)
PreciseISO8601DateFormatter 的许可证是标准的 MIT 许可证。您可以在 LICENSE
文件中找到它。