NetTime 是一个小型数据类型集合,用于表示日期和时间
每种类型都能够从 RFC 3339 中指定的字符串格式进行序列化和反序列化。
let date = DateTime(staticRFC3339String: "1979-05-27T00:32:00.999999-07:00")
// Original representation is preserved. For example:
date.time.secondFraction // [9, 9, 9, 9, 9, 9]
// Serialize back to RFC 3339 timestamp.
date.description // 1979-05-27T00:32:00.999999-07:00
// Use it with Foundation:
Foundation.Date(timeIntervalSinceReferenceDate: date.timeIntervalSince2001)
Foundation.TimeZone(secondsFromGMT: date.utcOffset.asSeconds)
你可能会问,为什么不直接使用 Foundation.Date
呢?
事实证明,如果你考虑到不同的日历和时区,时间很难表示。 但有时忽略这个问题是合理的。 这就是 RFC 3339 存在的原因:“为了在 Internet 协议中表示和使用日期和时间时,提高一致性和互操作性。” 可以这么说,一致性和互操作性 超越了互联网协议。
此外,将时间戳转换为内存对象(例如 TimeInterval
或 Foundation.Date
)是一种破坏性操作:原始时间表示会丢失。 想知道使用了什么时区偏移量? 预期秒的小数部分的精度是多少? 没门。 NetTime 保留了符合 RFC 3339 的时间戳中的所有信息。
use_frameworks!
pod "NetTime"
.package(url: "http://github.com/dduan/NetTime", from: "0.2.3")
不要使用 NetTime 的数据类型作为直接向最终用户显示时间的数据源。 使用类似 Foundation.DateFormatter
的东西并遵循最佳实践。 永远不要假设您足够了解时区和/或日历来格式化日期字符串!
MIT。 请参阅 LICENSE.md
。