#time #calendar #date #unicode #no-std #localization #no-alloc

no-std kine

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

4 个版本

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

#359国际化 (i18n)

MIT/Apache

54KB
849

kinet

kinet 是一个用于 Rust 中时间处理的 crate。

它首先旨在保证正确性,但也为适配器提供匹配基本任何需求的时间格式化选项。

通过 Time 类型实现正确性,这是本 crate 的主要类型。该 Time crate 处理时间(假设系统已正确配置),应始终以恒定速率向前移动,包括计算机的重启(此时 Instant 将不再单调)和闰秒(此时 SystemTime 可能不再单调)。这是通过了解闰秒来实现的,因为必须通过二进制的功能标志来配置提供者,直到外存在类型成为现实。尽管不是所有系统都能提供如此精确的时钟,但执行代码本身所需的时间可能已经使测量不准确了。

重要的是,使用 Duration 操作在 Time 上可以假设时间是线性的,因为它将正确地运行通过闰秒。例如,在 POSIX纪元前一分钟的时间是 1969-12-31T23:59:10Z,因为那时有 10 个闰秒。

格式化选项通过 Calendar 特性来处理。一个 Calendar 是显示时间的一种方式。特别是,kine-icu(在 kineicu 功能下提供)提供了 icu4x 的所有格式化选项,并结合了 kine 的精确时间处理。这些 crate 还允许对时间进行“直观”的算术运算,这可能会产生有问题的结果。例如,一旦转换为 UTC 时区,POSIX 纪元前的一个“伪分钟”将变为 1969-12-31T23:59:00Z

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

依赖关系

~0–1.4MB
~29K SLoC