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)
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
(在 kine
的 icu
功能下提供)提供了 icu4x
的所有格式化选项,并结合了 kine
的精确时间处理。这些 crate 还允许对时间进行“直观”的算术运算,这可能会产生有问题的结果。例如,一旦转换为 UTC 时区,POSIX 纪元前的一个“伪分钟”将变为 1969-12-31T23:59:00Z
每个 Calendar
都可以“读取”和“写入”精确的时间。其中,“读取”操作对应于确定某个书写时刻对应于现实生活中的哪个时刻。而“写入”操作对应于确定如何从现实生活中识别的时刻进行书写。
依赖关系
~0–1.4MB
~29K SLoC