我有time::Duration
。如何将此持续时间表示的毫秒数作为整数?曾经有一个num_milliseconds()
函数,但它不再可用。
答案 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;
另请参阅: