2 个版本
0.1.1 | 2023年2月6日 |
---|---|
0.1.0 | 2023年2月6日 |
#9 in #epoch-time
在 2 个crate中使用
46KB
788 行
Kine
Kine 是一个用于 Rust 中的时间处理的 crate。
它首先追求的是正确性,同时也提供与适配器需求基本匹配的时间格式化选项。
正确性是通过 Time
类型实现的,这是本 crate 的主要类型。Time
crate 处理时间(假设系统已正确配置),在系统重启(此时 Instant
不再是单调的)和闰秒(此时 SystemTime
可能不再单调)的情况下,时间应该只以恒定速率向前移动。这是通过了解闰秒来实现的,这些闰秒需要通过二进制的功能标志进行配置,直到外存类型成为现实。 Time
能够以纳秒的精度表示时间,尽管不是所有系统都能提供这样精确的时钟,而且代码运行本身所需的时间可能已经使得测量不准确。
重要的是,对 Time
使用 Duration
操作可以假设时间是线性的,因为它将正确地通过闰秒。例如,在 POSIX 纪元前一分钟的时间是 1969-12-31T23:59:10Z
,因为那时有10个闰秒。
格式化选项通过 Calendar
特性来处理。一个 Calendar
是显示时间的一种方式。特别是,kine-icu
(在 kine
的 icu
功能下可用)提供了与 icu4x
相同的格式化选项,同时具有 kine
精确的时间处理。这些 crate 还允许对时间进行“直观”的算术运算,这可能会产生有问题的结果。例如,一旦转换为 UTC 时区,POSIX 纪元前的“伪分钟”将变成 1969-12-31T23:59:00Z
每个 Calendar
都可以“读取”和“写入”精确的时间。其中“读取”操作对应于确定所写的时刻与现实生活中哪个瞬间相对应。而“写入”操作对应于确定如何从现实生活中已识别的瞬间进行写入。