Time 如何利用crust中的Chrono库查找时差

Time 如何利用crust中的Chrono库查找时差,time,rust,Time,Rust,我有一个Rust程序,我想用开始时间和结束时间做一些简单的基准测试 使用chrono::{NaiveTime,Utc}; fn main(){ 让我们开始计时:NaiveTime=Utc::now().time(); 让我们结束时间:NaiveTime=Utc::now().time(); println!(“运行的总时间为{}”,结束时间-开始时间); } 上面的代码打印为: 运行总时间为PT520.532696S 如果我没有错的话,我猜是520秒,但是我怎么能把它转换成分钟呢?有更好的方

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

使用chrono::{NaiveTime,Utc};
fn main(){
让我们开始计时:NaiveTime=Utc::now().time();
让我们结束时间:NaiveTime=Utc::now().time();
println!(“运行的总时间为{}”,结束时间-开始时间);
}
上面的代码打印为:

运行总时间为PT520.532696S
如果我没有错的话,我猜是520秒,但是我怎么能把它转换成分钟呢?有更好的方法吗?

简单介绍一下:

使用时钟::Utc;
fn main(){
让start_time=Utc::now().time();
让end_time=Utc::now().time();
设diff=结束时间-开始时间;
println!(“运行的总时间为{}”,diff.num_minutes());
}

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

似乎公认的答案有一些潜在的缺陷

一种可能更好的方法,如

详情如下:

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);
}