如何在Rust中获取持续时间为毫秒数

时间:2016-04-23 20:32:33

标签: rust

我有time::Duration。如何将此持续时间表示的毫秒数作为整数?曾经有一个num_milliseconds()函数,但它不再可用。

3 个答案:

答案 0 :(得分:3)

这是我提出的解决方案,即将秒数乘以十亿,将其加到纳秒,然后除以1e6。

let nanos = timeout_duration.subsec_nanos() as u64;
let ms = (1000*1000*1000 * timeout_duration.as_secs() + nanos)/(1000 * 1000);

答案 1 :(得分:2)

使用time::Duration上的time crate来提供num_milliseconds()方法的crates.io。

答案 2 :(得分:0)

从Rust 1.33.0开始,有一个as_millis()函数:

use std::time::SystemTime;

fn main() {
    let now = SystemTime::now().duration_since(SystemTime::UNIX_EPOCH).expect("get millis error");
    println!("now millis: {}", now.as_millis());
}

从Rust 1.27.0开始,有一个subsec_millis()函数:

use std::time::SystemTime;

fn main() {
    let since_the_epoch = SystemTime::now().duration_since(SystemTime::UNIX_EPOCH).expect("get millis error");
    let seconds = since_the_epoch.as_secs();
    let subsec_millis = since_the_epoch.subsec_millis() as u64;
    println!("now millis: {}", seconds * 1000 + subsec_millis);
}

从Rust 1.8开始,有一个subsec_nanos函数:

let in_ms = since_the_epoch.as_secs() * 1000 +
            since_the_epoch.subsec_nanos() as u64 / 1_000_000;

另请参阅: