我有一个time::Duration
.如何将此持续时间表示的毫秒数作为整数?曾经有一个num_milliseconds()
功能,但它不再可用.
小智 8
从 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());
}
Run Code Online (Sandbox Code Playgroud)
从 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);
}
Run Code Online (Sandbox Code Playgroud)
从 Rust 1.8 开始,有一个subsec_nanos
函数:
let in_ms = since_the_epoch.as_secs() * 1000 +
since_the_epoch.subsec_nanos() as u64 / 1_000_000;
Run Code Online (Sandbox Code Playgroud)
也可以看看:
这是我想出的解决方案,即将秒乘以十亿,加上纳秒,然后除以 1e6。
let nanos = timeout_duration.subsec_nanos() as u64;
let ms = (1000*1000*1000 * timeout_duration.as_secs() + nanos)/(1000 * 1000);
Run Code Online (Sandbox Code Playgroud)