如何在 Rust 中使用 Chrono 库查找时差

spa*_*rkr 4 time rust

我有一个 Rust 程序,我想用开始时间和结束时间做一些简单的基准测试!

use chrono::{NaiveTime, Utc};

fn main() {
    let start_time: NaiveTime = Utc::now().time();
    let end_time: NaiveTime = Utc::now().time();
    println!("Total time taken to run is {}", end_time - start_time);
}
Run Code Online (Sandbox Code Playgroud)

上面的代码打印为:

Total time taken to run is PT520.532696S
Run Code Online (Sandbox Code Playgroud)

如果我没记错的话,我想是 520 秒,但是我如何将其转换为分钟?有没有更好的办法?

Cir*_*rgs 7

看来接受的答案有一些潜在的缺陷。

锈病苗圃中推荐的可能更好的方法

如下:

use std::time::{Duration, Instant};
use std::thread;

fn expensive_function() {
    thread::sleep(Duration::from_secs(1));
}

fn main() {
    let start = Instant::now();
    expensive_function();
    let duration = start.elapsed();

    println!("Time elapsed in expensive_function() is: {:?}", duration);
}
Run Code Online (Sandbox Code Playgroud)


Sta*_*eur 5

文档的简单外观给出了答案

use chrono::Utc;

fn main() {
    let start_time = Utc::now().time();
    let end_time = Utc::now().time();
    let diff = end_time - start_time;
    println!("Total time taken to run is {}", diff.num_minutes());
}
Run Code Online (Sandbox Code Playgroud)

但请注意,这不是以单调方式测量时间的好方法,如果用户以某种方式更改系统日期,此代码可能会显示 -5 分钟。还调用time()删除日期的信息,这在您使用 chrono 时很奇怪,因为通常您不想忽略日期,所以只需删除time()调用。