本文简要介绍rust语言中 Struct std::time::SystemTime
的用法。
用法
pub struct SystemTime(_);
系统时钟的测量值,可用于与文件系统或其他进程等外部实体进行通信。
区别于std::time::Instant类型,这次测量不是单调的.这意味着您可以将一个文件保存到文件系统,然后将另一个文件保存到文件系统,第二个文件的SystemTime
测量值早于第一个文件.换句话说,实时发生在另一个操作之后的操作可能有一个更早的SystemTime
!
因此,比较两个 SystemTime
实例以了解它们之间的持续时间会返回 Result
而不是可靠的 Duration
,以表明可能会发生这种时间漂移并需要处理。
尽管无法直接检查 SystemTime
,但此模块中提供了 UNIX_EPOCH
常量作为锚点,以便及时了解有关 SystemTime
的信息。通过从这个固定时间点计算持续时间,SystemTime
可以转换为人类可读的时间,或者可能是其他一些字符串表示。
SystemTime
结构的大小可能因目标操作系统而异。
例子:
use std::time::{Duration, SystemTime};
use std::thread::sleep;
fn main() {
let now = SystemTime::now();
// we sleep for 2 seconds
sleep(Duration::new(2, 0));
match now.elapsed() {
Ok(elapsed) => {
// it prints '2'
println!("{}", elapsed.as_secs());
}
Err(e) => {
// an error occurred!
println!("Error: {:?}", e);
}
}
}
底层系统调用
目前,以下系统调用正在使用 now()
获取当前时间:
平台 | 系统调用 |
---|---|
SGX | insecure_time 用户调用.更多信息新交所的计时 |
UNIX | clock_gettime(实时时钟) |
Darwin | gettimeofday |
VXWorks | clock_gettime(实时时钟) |
SOLID | SOLID_RTC_ReadTime |
WASI | __wasi_clock_time_get(实时时钟) |
Windows | GetSystemTimePreciseAsFileTime /GetSystemTimeAsFileTime |
免责声明:这些系统调用可能会随着时间而改变。
注意:如果底层结构不能代表新的时间点,像 add
这样的数学运算可能会出现Panics。
相关用法
- Rust SystemTime.elapsed用法及代码示例
- Rust SystemTimeError.duration用法及代码示例
- Rust SystemTimeError用法及代码示例
- Rust SystemTime.now用法及代码示例
- Rust SystemTime.duration_since用法及代码示例
- Rust System用法及代码示例
- Rust SyncSender.send用法及代码示例
- Rust SyncOnceCell用法及代码示例
- Rust SyncLazy用法及代码示例
- Rust SyncOnceCell.get_or_try_init用法及代码示例
- Rust SyncOnceCell.get_or_init用法及代码示例
- Rust SyncSender.try_send用法及代码示例
- Rust SymmetricDifference用法及代码示例
- Rust SyncOnceCell.set用法及代码示例
- Rust SyncOnceCell.take用法及代码示例
- Rust SyncSender用法及代码示例
- Rust SyncOnceCell.into_inner用法及代码示例
- Rust SyncLazy.force用法及代码示例
- Rust String.try_reserve用法及代码示例
- Rust Saturating.reverse_bits用法及代码示例
- Rust Seek.stream_len用法及代码示例
- Rust SplitNMut用法及代码示例
- Rust SocketAddrV6.ip用法及代码示例
- Rust Shl.shl用法及代码示例
- Rust SubAssign.sub_assign用法及代码示例
注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 Struct std::time::SystemTime。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。