当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Rust SystemTime用法及代码示例


本文简要介绍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() 获取当前时间:

免责声明:这些系统调用可能会随着时间而改变。

注意:如果底层结构不能代表新的时间点,像 add 这样的数学运算可能会出现Panics。

相关用法


注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 Struct std::time::SystemTime。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。