當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。