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