Rust中将时间转为人类可读格式

当谈到在 Rust 中将时间格式化为人类可读的格式时,可能有多种可能的解决方案,包括进行一些数学运算或使用Instance。

这里演示millisecond crate,这是用于此目的的专用和专门的 crate。此 crate 将纳秒、微秒、毫秒、秒等转换为短格式和长格式;适合人眼。

假设,我们有一个包含毫秒值(如 33023448000)的变量,它是在我们代码的某个地方计算出来的,而我们希望向用户显示有形的等效结果,如 1 年 17 天 5 小时 10 分 48 秒,或紧凑版本 1y 17d 5h 10m 48s。 在这里,毫秒板条箱发挥了作用。

首先,确保您已经在系统上安装了 Rust 和 Cargo ,并且它们在终端(Windows 上为 CMD)中可用。

1. 创建项目
运行以下命令初始化一个空的二进制项目:

cargo init my-millisecond --bin && cd my-millisecond

2. 安装millisecond板
目前,该包的最新版本是0.3。

cargo add millisecond@0.3

3. 使用
打开src/main.rs并写入以下代码:
use millisecond::Millisecond;

fn main() {
    let computed_millis = 33023448000;
    let ms = Millisecond::from_millis(computed_millis);
    println!("{ms}"); // results in: 1y 17d 5h 10m 48s
}

4.运行项目
cargo run

输出:

~/my-millisecond$ cargo run
   Compiling my-millisecond v0.1.0 (~/my-millisecond)
    Finished dev profile [unoptimized + debuginfo] target(s) in 0.19s
     Running target/debug/my-millisecond
1y 17d 5h 10m 48s

我在示例中使用了默认的格式化函数 (Display)。您可以改用严格的方法ms.to_short_string(),或者使用ms.to_long_string()来打印输出的长版本。

use millisecond::Millisecond;

fn main() {
    let computed_millis = 33023448000;
    let ms = Millisecond::from_millis(computed_millis);
    println!("default: {ms}"); // 1y 17d 5h 10m 48s
    println!(
"  short: {}", ms.to_short_string()); // 1y 17d 5h 10m 48s
    println!(
"   long: {}", ms.to_long_string()); // 1 year 17 days 5 hours 10 minutes 48 seconds
}

结论
在 Rust 中,将时间转换为人类可读的格式可能具有挑战性。该millisecondcrate 提供了一种更好的方法来克服这种情况。它易于使用、零依赖性、适用于嵌入式环境,并且使用属性构建no_std。该 crate 遵循 MIT 许可证,并受到pretty-msNPM包的启发。

参考: