时间库常见的对象
- Duration:代表时间跨度的类型,通常的用法是超时统计。
- Instant:纳秒单位的时钟。
- SystemTime:系统时钟。
- SystemTimeErro:系统时钟错误。
- TryFromFloatSecsError:转换浮点数为Duration时的报错。
Duration时间
Duration = Duration::new(u64::MAX, NANOS_PER_SEC - 1)
:获取最大时间Duration。
fn new(secs: u64, nanos: u32) -> Duration
:创建一个特定值的Duration。
fn from_secs(secs: u64) -> Duration
:创建特定秒数的Duration。
from_millis(millis: u64) -> Duration
:创建特定毫秒数的Duration。
from_micros(micros: u64) -> Duration
:指定特定微妙数的Duration。
from_nanos(nanos: u64) -> Duration
:创建特定纳秒数的Duration。
is_zero(&self) -> bool
:返回Duration是否为0。
as_secs(&self) -> u64
:转换Duration为秒数。
subsec_millis(&self) -> u32
:转换除去首位后剩余部分为毫秒数,比如4.321秒,输出为321。
subsec_micros(&self) -> u32
:转换为微秒单位后除去首位之后的微秒数,比如1.234567s,输出234567。
fn as_millis(&self) -> u128
:转换为纳秒单位后取出首位之后剩余的纳秒数,比如1001000123。
fn subsec_nanos(&self) -> u32
:转换为纳秒单位后,原先小数部分转换为纳秒单位。
as_millis(&self) -> u128
:返回单位为微妙数后小数部分转换为微秒数。
as_micros(&self) -> u128
:返回小数部分转换为毫秒之后的数值。
as_nanos(&self) -> u128
:转换小数部分为纳米之后的数值。
checked_add(self, rhs: Duration) -> Option<Duration>
:检查加法,如果饱和值溢出则返回None否则返回计算值。
saturating_add(self, rhs: Duration) -> Duration
:饱和值加法,如果溢出则返回饱和值。
checked_sub(self, rhs: Duration) -> Option<Duration>
:检查减法,如果溢出则返回None否则返回计算值。
saturating_sub(self, rhs: Duration) -> Duration
:饱和值减法,如果溢出则返回饱和值否则返回计算值。
checked_mul(self, rhs: u32) -> Option<Duration>
:饱和值乘法,如果溢出则返回None否则返回计算值。
saturating_mul(self, rhs: u32) -> Duration
:饱和值乘法,如果语出则返回饱和值否则返回计算值。
checked_div(self, rhs: u32) -> Option<Duration>
:检查除法,如果被除数为0则返回None,否则返回计算值。
as_secs_f64(&self) -> f64
:返回Duration包含的秒数,fp64输出。
as_secs_f32(&self) -> f32
:返回Duration包含的秒数,fp32输出。
from_secs_f64(secs: f64) -> Duration
:从fp64秒构建Duration。
from_secs_f32(secs: f32) -> Duration
:从fp32秒构建Duration。
mul_f64(self, rhs: f64) -> Duration
:Duration乘以rhs(fp32)返回Duration。
mul_f32(self, rhs: f32) -> Duration
:Duration乘以rhs(fp64)返回Duration。
div_f64(self, rhs: f64) -> Duration
:Duration除以rhs(fp64)返回Duration。
div_f32(self, rhs: f32) -> Duration
:Duration除以rhs(fp32)返回Duration。
div_duration_f64(self, rhs: Duration) -> f64
:Duration除以另一个Durationrhs返回f64结果(实验接口)。
div_duration_f32(self, rhs: Duration) -> f32
:Duration除以另一个Durationrhs返回f32结果(实验接口)。
try_from_secs_f32(secs: f32) -> Result<Duration, TryFromFloatSecsError>
:from_secs_f32的检查版本,如果secs为负数、溢出或则无限则返回Err。
try_from_secs_f64(secs: f64) -> Result<Duration, TryFromFloatSecsError>
:from_secs_f64的检查版本,如果secs为负数、溢出或者无限则返回Err。
use std::time::Duration;
fn main() {
let five_second = Duration::from_secs(5);
let five_nanosecond = Duration::from_nanos(5);
println!(
"5 second = {:?} 5 nano second = {:?}",
five_second, five_nanosecond
);
assert_eq!(Duration::MAX, Duration::new(u64::MAX, 1000_000_000 - 1));
let five_second_new = Duration::new(5, 0);
let five_mili = Duration::from_millis(5);
println!(
"acc time = {:?} five 毫秒 = {:?}",
five_second_new, five_mili
);
assert!(Duration::new(0, 0).is_zero());
assert!(Duration::new(5, 100).as_secs() == 5);
assert!(Duration::from_millis(5432).subsec_millis() == 432);
assert_eq!(Duration::from_millis(5010).subsec_nanos(), 1000_000_0);
}
Instant
常见方法
now() -> Instant
:返回一个对应当前的Instant。
duration_since(&self, earlier: Instant) -> Duration
:返回相对一另一个Instant流失了多少时间的Duration,如果当前Instant晚于另一个时间则返回0。
checked_duration_since(&self, earlier: Instant) -> Option<Duration>
:检查版本的duration_since,monotonicity bugs将导致结果为None。
saturating_duration_since(&self, earlier: Instant) -> Duration
:返回Instant相较于另一个Instant流失的时间,如果当前Instant晚于另一个时间则返回0。
elapsed(&self) -> Duration
:返回流失了多少时间。
checked_add(&self, duration: Duration) -> Option<Instant>
:返回当前Instant+Instant之后的结果(越界则为None)。
checked_sub(&self, duration: Duration) -> Option<Instant>
:返回当前Instant-Instan之后的结果(越界则为None)。
- ``