#time #calendar #date #epoch-time #read-write #aerospace #no-alloc

no-std kin-core

为 Rust 提供正确且易读的时间处理

2 个版本

0.1.1 2023年2月6日
0.1.0 2023年2月6日

#9 in #epoch-time


2 个crate中使用

MIT/Apache

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(在 kineicu 功能下可用)提供了与 icu4x 相同的格式化选项,同时具有 kine 精确的时间处理。这些 crate 还允许对时间进行“直观”的算术运算,这可能会产生有问题的结果。例如,一旦转换为 UTC 时区,POSIX 纪元前的“伪分钟”将变成 1969-12-31T23:59:00Z

每个 Calendar 都可以“读取”和“写入”精确的时间。其中“读取”操作对应于确定所写的时刻与现实生活中哪个瞬间相对应。而“写入”操作对应于确定如何从现实生活中已识别的瞬间进行写入。

依赖项