3 个版本

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

#333国际化(i18n)


kine 中使用

MIT/Apache

59KB
1K SLoC

Kine

Kine 是一个用于 Rust 时间处理的软件包。

它首先追求正确性,同时也提供与适配器需求基本匹配的时间格式化选项。

正确性通过 Time 类型来实现,这是本软件包的主要类型。Time 软件包处理时间(假设系统配置正确),时间应该始终以恒定速度向前移动,包括在计算机重启时(此时 Instant 将不再单调)以及闰秒(此时 SystemTime 可能不再单调)。这是通过了解闰秒来实现的,这得益于必须通过二进制文件中的功能标志配置的提供者,通过功能标志直到外存类型成为现实。 Time 能够以纳秒精度表示时间,尽管并非所有系统都能提供如此精确的时钟,并且运行代码本身所花费的时间可能会使测量本身就已经不准确。

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

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

每个 Calendar 都可以“读取”和“写入”精确的时间。读取操作对应于识别所写时刻对应现实生活中的哪个时刻。而写入操作对应于识别如何将识别的现实生活中的时刻写入。

依赖项

~9MB
~181K SLoC